문제 설명 문제 풀이 방법 알파벳이 들어가는 사전 배열을 만들어준다. for문으로 msg를 순회하며 word에 msg[i]의 문자를 더해준다. 그리고 word가 사전에 있다면 사전에서의 index값을 저장한 뒤 다음 바퀴에서 또 word가 있는지 확인한다. 이때, 없다면 그 word는 사전에 등록하고, 저장한 index값을 answer배열에 push메서드로 넣어준다. 마지막에는 for문이 다 돌때 마지막 index값을 answer배열에 넣어주지 못하기에 for문이 끝나고 마지막 index값을 넣어준다. 이 코드와 내가 처음 생각했던 방식의 순서가 반대이다. 나는 먼저 문자가 있는지 확인한 다음 배열에 넣는 방법이였지만 문제에서는 오류를 일으키는 방법이다. 이렇게 체크한 뒤 데이터를 가공하는 문제는 항상 ..
코테연습
문제 설명 문제 풀이 방법 이 문제는 3가지 단계로 나누어 풀었다. 주어진 문자열을 2개씩 나누는 작업(특수문자, 숫자 등이 있으면 제외하는 작업도 포함) 합집합과 교집합을 구하는 작업(이때 다중집합 작업을 해줌) (추가 23-06-11) set을 이용한 이유는 두개씩 나누어진 배열들 간 겹치지 않는 요소들을 모은뒤 이를 이용해 set의 요소별 나누어진 배열들에 있는 같은 요소들의 갯수를 구해 교집합, 합집합을 구하기 위함이다. 나온 합집합과 교집합을 이용해 답을 구하는 작업 내가 작성한 코드 const solution = (str1, str2) => { let arr1 = makeArr(str1.toLowerCase()); let arr2 = makeArr(str2.toLowerCase()); // 다..
문제 설명 문제 풀이 방법 최소 공배수는 두 수를 곱한 값을 최대 공약수로 나눈 것이기에 배열을 돌며 2개씩 곱하고 두 수의 최대 공약수로 나누고, reduce메서드로 이전에 나온 최소 공배수와 계산을 해주고 모두 더해주면 된다. 내가 작성한 코드 const solution = (arr) => { return arr.reduce((a, b) => (a*b) / getGcd(a, b),1) } const getGcd = (a, b) => a % b === 0 ? b : getGcd(b, a%b)
문제 설명 문제 풀이 방법 문제의 대진표에서 첫번째 대전이 모두 끝나면 승리자 들은 모두 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])) }