코딩 테스트/프로그래머스 코딩 테스트 연습

문제 설명 문제 풀이 방법 문제의 대진표에서 첫번째 대전이 모두 끝나면 승리자 들은 모두 1부터 n/2까지 순서로 다시 재배치된다. 이런 방법으로 계속해서 가면 a와 b 가 만나 경기가 끝나게 되면 두사람중 한명이 올라가는 번호는 같을 것이다. 내가 작성한 코드 const solution = (n,a,b) => { let cnt = 0; while(a !== b){ a = Math.ceil(a/2); b = Math.ceil(b/2); cnt++; } return cnt }
문제 설명 문제 풀이 방법 문자열 정렬을 하라는 문제로써 각 문자열의 n번째 문자가 같으면 문자열 전체를, 같지 않으면 n번째 문자열을 기준으로 정렬해주면 된다. 기본적으로 sort메서드를 사용하며, 문자열을 비교할 때는 localeCompare 메서드를 사용해준다. localeCompare 메서드는 참조 문자열이 정렬순으로 지정된 문자열 앞 뒤에 오는지 혹은 동일한지 수치를 반환한다. 내가 작성한 코드 const solution = (strings, n) => { return strings.sort((a, b) => a[n] === b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n])) }
문제 설명 문제 풀이 방법 이번 문제는 t 문자열에서 p의 길이만큼 자른 문자열과 p의 숫자로써의 크기 비교를 해서 p가 더 크거나 같은 경우의 수를 반환하는 문제이다. 우선 for문으로 t의 문자열을 순회하며 p의 길이만큼 문자열을 잘라준 뒤 p와 크기 비교를 해주면 된다. 내가 작성한 코드 1 function solution(t, p) { let answer = 0; for(let i=0; i
문제 설명 문제 풀이 방법 이 문제의 설명에서 게임에 참여한 사람들이 지게되는 3가지 조건을 말했다. 1. 앞 사람이 말한 말의 끝에 문자를 시작문자로 하지 않았을 때. 2. 본인 이전의 사람이 말했던 말을 중복해서 말했을 경우. 3. 한가지 문자로 이루어진 말을 했을 경우 그리고 1번째로 탈락한 사람이 발생한 경우 바로 그 사람의 번호와 몇번째 횟수에서 탈락했는지 반환한다. 이를 위해 for문 안에 탈락자를 저장하는 배열의 길이를 측정해 예외 처리 했다. 또한 탈락한 사람이 없는 경우는 [0, 0]을 반환 하도록 했다. 내가 작성한 코드 const solution = (n, words) => { let answer = []; for(let i=0; i 0){ if( words[i][0] !== word..
문제 설명 문제 풀이 방법 처음에 문자열로만 접근하려 했는데 생각해보니 스택으로 접근하면 더 빠르게 될거 같아 접근법을 바꿨다. 아무래도 문자열의 길이가 1,000,000 까지다 보니 너무 길다 생각했다. 문자열로 접근해 풀게되면 문자열을 배열로 바꾸고, for문을 사용하고 그 안에 splice를 사용하기에 시간 복잡도가 높게 나올거 같았다. stack으로 접근하면 for문 한번만 돌면 되기에 시간 복잡도가 낮게 나올것이다. 내가 작성한 코드 const solution = (s) => { let arr = []; for(let i=0; i
문제 설명 문제 풀이 방법 피보나치 수를 구하는 방법은 내가 이전에 정리한 글을 참고해 DP접근법으로 문제를 해결하려했다. top-down방법은 시간초과가 발생해 통과하지 못했고, down-top으로 풀어봤지만 이 역시 마찬가지 였다.... 계속 고민해 보았지만 결국 다른 사람들이 질문한 글을 봤다. 가장 잘 설명된 글에서 이렇게 말했다. 피보나치 수가 78번째 정도만 되어도 정수 범위가 JS에서 허용하는 범위보다 커져 에러가 발생한다. 이를 방지하기 위해 문제에서 "1234567을 나눈 나머지를 리턴" 이라는 조건을 부여한것이다. 이때 글에 나온 %의 속성이 많이 흥미로웠다. (A+B)%C = ((A%C) + (B%C))%C 라는 속성이다. 이 의미가 무엇인가 하면 1, 1, 2, 3, 5, 8에서 (..
58청춘
'코딩 테스트/프로그래머스 코딩 테스트 연습' 카테고리의 글 목록 (21 Page)