전체 글

문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 메모 정답 function solution(wallpaper) { const xPositions = []; const yPositions = []; // 파일의 위치에 해당하는 좌표를 x, y별로 모은다 wallpaper.map((item, xIndex) => { const tmp = item.split(""); tmp.map((item, yIndex) => { if (item === "#") { xPositions.push(xIndex); yPositions.push(yIndex); } }); }); ..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(survey, choices) { // 결과 데이터 형태를 미리 객체 형태로 만들어 순서를 통제한다 // 나중에 R-T, C-F, J-M, A-N끼리 어떤 알파벳 점수가 더 높은지 비교해야 하는데 이렇게 미리 만들어두면 나중에 따로 정렬할 필요가 없다 // 두 알파벳의 점수가 동일한 경우에도 R-T, C-F, J-M, A-N에서 왼쪽 알파벳이 우선 순위를 갖게 된다 let result = { R: 0, T: 0, C: 0, F: 0, J: 0, M: 0, A: 0, ..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(new_id) { // 1단계: new_id의 모든 대문자를 대응되는 소문자로 치환합니다. new_id = new_id.toLowerCase(); // 2단계: new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. const filterText = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", ..
문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모풀이 방법 1코드에는 문제가 없는 것 같은데 계속해서 시간 초과가 떠서 당황했던 문제이다. 처음엔 시간 초과의 원인이 for문이나 splice()에 있는 줄 알고 한참을 헤맸다. 그런데 시간 초과의 원인은 연속된 4개의 요소를 삭제한 뒤 i를 -1로 초기화했기 때문이었다. 다시 말해 배열에서 splice()를 통해 요소를 삭제할 때마다 i가 -1로 초기화되면서 for문이 완전히 처음부터 다시 시작되고 있었던 것이다. 그러나 배열에서 변경된 부분은 일부 삭제된 요소에만 해당되므로 i를 -1로 설정할 필요는..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(numbers, hand) { // 각각의 키패드 좌표를 담은 배열을 생성한다 const keypadPosition = [ [0, 3], [1, 3], [2, 3], [0, 2], [1, 2], [2, 2], [0, 1], [1, 1], [2, 1], [1, 0], ]; const leftNumbers = [1, 4, 7]; const rightNumbers = [3, 6, 9]; // 왼손, 오른손의 초깃값 위치 변수를 좌표로 설정한다 let leftHand = [..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(board, moves) { let basket = []; let answer = 0; // moves의 길이 만큼 반복문을 돌린다 // board의 맨 윗줄부터 moves 위치를 체크한다 // 해당 줄의 moves 값이 0이면 다음 줄로 넘어간다 // 값이 0이 아닌 경우: // 해당 값을 basket에 푸시한 뒤 0으로 교체한다 // 반복문에서 빠져나온다 for (let i = 0; i < moves.length; i++) { for (let j = 0; j < ..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(s, skip, index) { const sToArr = s.split(""); const skipToArr = skip.split(""); let answer = ""; const alphabetArr = [ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ]; // 스킵할 알파벳을..
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 function solution(keymap, targets) { let answer = []; for (let i = 0; i < targets.length; i++) { let target = targets[i].split(""); let minArr = []; // isImpossible은 찾는 글자가 없는 경우 flag 처리할 변수 let isImpossible = false; for (let j = 0; j < target.length; j++) { let countArr = []; for..
· ETC/Error
react-snowfall 라이브러리를 사용하던 도중 다음과 같은 오류가 발생했다. 해결 방법으로 useLayoutEffect가 클라이언트 사이드에서만 독점적으로 렌더링되어야 한다는 부분이 언급된 걸 보면, Next.js의 서버 사이드 렌더링 방식으로 인해 오류가 발생된 듯하다. Warning: useLayoutEffect does nothing on the server, because its effect cannot be encoded into the server renderer's output format. This will lead to a mismatch between the initial, non-hydrated UI and the intended UI. To avoid this, useLayo..
· Next.js
테스트를 마치고 나면 사용자의 별점과 등수가 표시되는데, 해당 정보를 트위터와 카카오톡에 공유하는 기능을 만들었다. 트위터 공유 트위터에 공유하기는 굉장히 간편했다. 아래와 같이 url에 공유를 원하는 url 주소를 입력하고, text에 추가로 필요한 텍스트를 입력하면 된다. window.open() 메서드를 버튼 형태로 만들면 해당 코드가 바로 열린다. https://twitter.com/share?url=url&text=text { window.open( `https://twitter.com/share?url=https://divdivdiv.com/cinephile&text=나의 시네필 평점은?${starCount}` ); }} > 트위터 공유하기 ; 카카오톡 공유 카카오톡 공유 기능을 쓰려면 카카오..