원래는 못 푼 문제가 아니여서 작성을 아니하려다... 푼 사람도 별로 없고, 후기도 별로 없길래 써본다. 원래 빈틈 시장 노리는 것 아니겠어? ㅎㅎ Collection 구현에 관심이 있다면 풀어보는 것도 낫밷이다! 1. 출처 3961번: 터치스크린 키보드 첫째 줄에 테스트 케이스의 개수 t (0 < t < 20)가 주어진다. 각 테스트 케이스의 첫째 줄에는 사용자가 입력한 단어와 프로그램이 가지고 있는 단어의 개수 l이 주어진다. (0 < l ≤ 10) 다음 l개의 줄 www.acmicpc.net 내가 딱 100번째이다 ㅎㅎ 의미부여중 ㅎㅎ... 사용자가 어떤 단어를 입력한다. 컴퓨터에는 예비 단어 N가지가 있다. 사용자의 단어와 컴퓨터의 예비 단어 사이 거리를 구한다. 거리는 단어에 속해있는 각 캐릭터..
조금 응용된 BFS 문제이다. 이름은 귀엽지만, 문제는 귀엽지 않았다 ㅡ ㅡ 1. 출처 https://www.acmicpc.net/problem/1326 1326번: 폴짝폴짝 첫째 줄에 징검다리의 개수 N(1≤N≤10,000)이 주어지고, 이어서 각 징검다리에 쓰여 있는 N개의 정수가 주어진다. 그 다음 줄에는 N보다 작거나 같은 자연수 a, b가 주어지는 데, 이는 개구리가 a번 www.acmicpc.net N개의 돌이 주어지고, 돌 위에는 점프할 수 있는 X배수가 써져있음 X*1, X*2, X*3... 이런식으로 1~N 돌 안에서 이동할 수 있음 목적지에 도착하기 위해 밟아야 하는 최소의 돌 수를 도출 도착할 수 없다면 -1 2. 설계 문제를 보면 출발지 < 도착지라는 보장이 없다. 때문에 우리는 출..
1. Intro create-react-app을 하면 자동으로 리액트 설정을 다 해준다. 대신에 우리는 create-react-app이 하는 일, 기본원리를 이해할 수 없다. 그래서 직접 1번 셋팅해보는 게 좋다. 2. 웹팩을 왜 쓸까? 유지보수성을 높일 수 있다. 하나의 HTML 파일에 2만 개의 컴포넌트를 담게되면 유지보수가 거의 불가능하다고 볼 수 있다. 실제 과거 페이스북 컴포넌트는 2만 개라고 한다 : ) 중복을 줄일 수 있다. 컴포넌트 파일을 만든다. (jsx로 만드는게 좋다. x하나가 더 붙어 리액트 파일임을 개발자가 직관적으로 알 수 있다) //컴포넌트 파일을 쪼개는 경우 필요한 패키지와 라이브러리 const React = require('react'); const {Component} =..
1. Intro 리액트에서는 클래스형이 아닌 함수형을 쓰라고 권장한다. Hooks와 함께 쓰면 간결한 코드 작성이 가능하다. (코드 수가 줄어듬) 하지만 클래스형을 아예 몰라도 되는가? NoNo! 과거 클래스로 코드를 짰던 팀에서는 class 코드가 잔재하기 때문에 알아두면 좋다. Hooks는 use가 써져있는 것들을 말한다. 2. useState 1) class state를 1개로 묶어줬다. state가 변경될 때마다 render가 재렌더링 된다. class GuGuDan extends React.Component{ state = { first: Math.ceil(Math.random() * 9), second: Math.ceil(Math.random() * 9), value: '', result: '..
만약 이러면...? 만약 이러면?...에 빠졌던 문제 ㅋㅋㅋ 한 core가 선을 뻗어있는 상태에서 다른 core가 침범하는 방향이 답이면 이전 core의 선을 치워야하나?... 그 답은 아래에 ^^... 1. 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 테두리 부근에 core가 있다면 이미 전기가 연결된 것이다. core들은 4방으로 선을 뻗을 수 있다. 최대한 많은 core의 선을 연결하고, 최소의 core 선 값을 도출해라 2. 설계..
1. 비동기란 무엇이냐? 한 번 비동기는 영원한 비동기이다. async, await을 붙여 동기로 만들었다는 말은 말도 안된다는 소리다. 강사님은 말한다. 비동기를 동기로 바꾸려는 노력을 아예~ 하지마세요. 그간 했던 프로젝트가 떠오른다... 2. 비동기는 백그라운드를 거친다. 비동기이면 백그라운드를 한 번 거친다. 백그라운드는 OS 혹은 C++ 엔진 이라고 생각하면 된다. 호출 스택에서 비동기 함수가 실행되면 백그라운드에 들어간다. 백그라운드에 들어가는 순간 JavaScripts에서는 되지 않던 동시 실행이 가능해지는 영역이라고 생각하면 된다. 백그라운드에 들어가는 요소들 setTimeout(비동기 함수)의 타이머 Promise nextTick 네트워크 요청(ajax) 이벤트 리스너(click 등) 3..
1. Promise란? Promise는 실행이 됐는데, 결과값을 나중에 쓸 수 있는 것이다. 콜백은 무조건 비동기가 아니다. 콜백은 동기일 수도 있고, 비동기 일 수도 있다. 비동기 콜백 종류가 비동기인 것이지 콜백이라고 해서 무조건 비동기가 아니라는 의미이다. 2. setTimeout의 단점 가장 대표적인 비동기 콜백은 setTimeout이다. 아래 코드의 단점은 어떤 조건이 만족되면 바로 ()=>{} 이 함수가 실행된다는 것이다. 즉, 함수 부분을 분리할 수 없다는 단점이 있다. setTimeout(()=>{ console.log('a'); }, 1000); 3. Promise의 장점 아래 코드는 Promise를 선언하는 기본 구조이다. new Promise((resolve, reject)=>{ })..
1. 기본 window를 의미함 console.log(this); 과거 this를 출력하면 js에서는 window 전역 객체가 호출되고, node에서는 global 전역 객체가 호출되었다. 하지만 이렇게 쓰일 경우 js와 node에 따라 분기처리를 해줘야하는 불편함이 있었다. 그래서 최근에는 globalThis로 통합이 되었다. 2. strict 모드 function a(){ 'use strict' console.log(this); } a(); 기존 this를 쓰면 globalThis가 도출된다고 했지만 'use strict'를 함께 써주면 this는 undefined가 된다. 3. this가 변경될 때 this가 변경되는 3가지 경우가 있다. 1) 객체 안에 있을 때 const obj = { name:..