본문 바로가기

일반 학습/코딩 테스트59

[프로그래머스] 위장 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/42578 풀이 객체를 사용해 for문을 돌리며 동일한 의상의 종류가 객체에 키로 담겨져 있지않다면 value를 1로 { 의상이름 : 1 }를 만들어주고 해당 i번째 의상이름을 +1 올려주게 된다. 여기서 왜 1로 시작하냐면 의상 종류마다 입지않는 경우도 더해야하기 때문이다. 이렇게 만든 checkCloth라는 객체에는 현재 의상과 의상종류가 각각 담기게 된다. 객체는 중복된 키를 저장시키지 않는다는 점을 고려했다. 그렇다면 아래처럼 값이 정렬된다. 입지 않는 경우도 더했기 때문에 각 밸류에는 +1이 더 더해져있다. 이제 경우의 수를 구할 것인데 각 의상 종류마다 들어있는 숫자 끼리 더하고 이를 곱.. 2022. 3. 22.
[프로그래머스] 괄호 회전하기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/76502 풀이 맨 처음 들어오는 문자열 s는 일단 } , ) , ] 로 시작한다면 올바른 괄호 문자열인지 계산할 가치가 없다. 무조건 올바르지 않기때문이다 해당 조건에 만족하지 않는 문자열 s만 올바른 문자열인지 체크하는 함수를 만들어서 검사후 true라면 count를 올리게 될 것이고 문자열은 회전을 하기 때문에 문자열 길이만큼 for문을 돌려 split을 한 뒤 배열로 하나하나 문자열을 나누고 맨 앞자리를 짤라 맨 뒤에 push하여 다시 join하여 문자열로 만든 뒤 반복하게 된다. checkString이라는 함수를 만들어 문자열을 받고 올바른 괄호 문자열 인지 검사한다. while문을 돌려 .. 2022. 3. 22.
[프로그래머스] 예상 대진표 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/12985 풀이 1,2,3,4,5,6,7,8 참가자가 있으면 다음경기 때는 1,2중 아무나, 뭐 2가 내려오고 3,4중 4가 5,6중6이 이렇게 내려와서 다음경기를 진행하게 된다. 아래처럼 2씩 나누게 된 몫을 확인해보자 맨 아래 4와 8이 만나고 여기서 8은 7이나 상관없게 된다. 처리조건 아래를 잘 살펴보면 된다. N : 21 이상 220 이하인 자연수 (2의 지수 승으로 주어지므로 부전승은 발생하지 않습니다.) 그렇다면 A,B를 받아서 2로 나누고 나눈수를 Math.ceil로 반올림하여 정수로 나타내고 while문을 돌려 a,b를 계속 바꿔주면서 이 둘이 일치할때 까지 돌린다. 코드는 굉장히 .. 2022. 3. 21.
[프로그래머스] 게임 맵 최단거리 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/1844 풀이 시작점은 배열의 제일 왼쪽 위에 있게되며 0,0이 된다. 그리고 상대팀 진영은 배열의 갖아 오른쪽 아래 이므로 [maps.length - 1, maps[0].length - 1]이 된다. 나는 0,0 기준으로 위 아래 왼쪽 오른쪽을 검사하여 1인 좌표들을 배열로 담고 해당 배열안에서 상대팀진영의 위치와 거리를 계산하여 가장 짧은 좌표를 다시 기준좌표로 바꿔주면서 이전의 기준점은 한번 거쳐 온 것을 표시하기위해 2로 바꾸어주었고 기준점 좌표와 상대방진영 좌표가 같아지면 break하도록 로직을 구현했다. 2로 바꿔줄 때마다 count를 올리며 만약에 기준점을 기준으로 위 아래 왼쪽 오른쪽.. 2022. 3. 19.
[프로그래머스] 조이스틱 처리순서 더보기 https://programmers.co.kr/learn/courses/30/lessons/42860 풀이 알파벳 위아래로 움직여 최소 움직임을 찾는값과 name으로 들어온 값에서 왼쪽, 오른쪽으로 이동하는 최솟값을 찾아야한다. 먼저 calc함수를 만들어 name에 들어온 각 알파벳마다 A를 기준으로 위로 또는 아래로 움직여 해당하는 알파벳이 만들어질 때 움직인 거리를 계산하기 위해 아스키코드를 사용하였다. function calc(i) { let start = 90 - i.charCodeAt(0) + 1; let end = i.charCodeAt(0) - 65; let minValue = Math.min(start, end); return minValue; } i로 알파벳이 하나들어오면.. 2022. 3. 18.
[프로그래머스] "123" 같은 문자열을 순열로 만들기 처리조건 더보기 https://programmers.co.kr/learn/courses/30/lessons/42839 풀이 function solution(numbers) { const N = numbers.length; const judged = {}; // 중복해서 세지 않도록 소수라고 판별한 숫자를 저장 const isUsed = [...Array(N)].map(() => 0); //numbers의 각 인덱스별 숫자가 사용중인지 확인 let ans = 0; // 계획 2 - 소수 판별하기 const isPrime = (number) => { if (number 0); console.log(isUsed); let ans = 0; // 계획 1 - 모든 숫자의 순열을 만듭니다. (function f(d.. 2022. 3. 17.