분류 전체보기 (109) 썸네일형 리스트형 비밀지도 Javascript [프로그래머스] 2018 KAKAO BLIND RECRUITMENT 더보기 function solution(n, arr1, arr2) { let answer = new Array(n).fill(new Array('')); let darr1 = new Array(n).fill(new Array('')); let darr2 = new Array(n).fill(new Array('')); for(let i = 0; i < n; i++) { darr1[i] = arr1[i].toString(2); darr2[i] = arr2[i].toString(2); if (darr1[i].length < n) { darr1[i] = '0'.repeat(n - darr1[i].length) + darr1[i]; } if (darr2[i].length < n) { darr2[i] = '0'.r.. 문자열압축 Javascript [프로그래머스] 2020 KAKAO BLIND RECRUITMENT 더보기 function solution(s) { let length = s.length; let answer = length; for (let i = 1; i < length / 2 + 1; i++) { let prev = s.slice(0, i); let tmp = '' let cnt = 1; let j = i; while (j < length) { if (prev === s.slice(j, j+i)) { cnt += 1; } else { if (cnt === 1) { tmp += prev; } else { tmp += cnt + prev; } cnt = 1; prev = s.slice(j, j+i); } j += i; } if (cnt === 1) { tmp += prev; } else { tmp +.. 오픈채팅방 Javascript [프로그래머스] 2019 KAKAO BLIND RECRUITMENT 더보기 function solution(record) { let answer = []; let length = record.length; let dict = {}; for (let i = 0; i < length; i++) { let tmpStr = record[i].split(' '); if (tmpStr[0] === 'Enter') { answer.push(tmpStr[1] + '님이 들어왔습니다.'); dict[tmpStr[1]] = tmpStr[2]; } else if (tmpStr[0] === 'Leave') { answer.push(tmpStr[1] + '님이 나갔습니다.'); } else if (tmpStr[0] === 'Change') { dict[tmpStr[1]] = tmpStr[2];.. python crawler 보호되어 있는 글입니다. [Python | 파이썬] 백준 17142 연구소3 [Python | 파이썬] 백준 17142 연구소3 이 문제는 itertools의 combinations을 이용해서 풀 수도 있지만 삼성 sw역량테스트에서는 itertools를 사용할 수 없는 경우가 있어서 저는 dfs를 이용해서 풀었습니다. 시간 제한을 해결하는 게 조금 어려운 문제였습니다. 1. 우선 virus는 2 => -2, 벽은 1 => -1로 변경하여 maps배열에서 최대시간을 계산하는 데 헷갈리지 않도록 구현하였습니다. 2. virus는 virus배열에 x, y를 넣어 추가하고 이후에 dfs에서 이 virus 배열을 이용하여 활성화시킬 바이러스가 m개가 되었을 때 바이러스를 퍼뜨리기 시작합니다. 3. 바이러스가 상하좌우로 도달한 위치에 있는 원소가 벽이 아니라면 이 위치에서 바이러스가 다시 .. [Python | 파이썬] 도둑질 (프로그래머스 DYNAMIC PROGRAMMING) [Python | 파이썬] 도둑질 (프로그래머스 DYNAMIC PROGRAMMING) 원형으로 이어진 집들 중에서 이어진 두 집은 연속으로 털 수 없다. 따라서 첫번째 집을 터는 경우에는 마지막 집을 털 수 없다. 첫번째 집을 터는 경우는 따라서 n-1번째 집까지만 확인해야한다. 그리고 첫번째 집을 털지 않는 경우에는 dp[0] = 0이어야 한다. 마지막 집을 털어도 되기 때문에 n번째 집까지 확인한다. 더보기 def solution(money): answer = 0 n = len(money) dp_1, dp_2 = [0 for _ in range(n-1)], [0 for _ in range(n)] dp_1[0] = money[0] dp_1[1] = max(money[0], money[1]) for i .. [Python | 파이썬] 등굣길 (프로그래머스 DYNAMIC PROGRAMMING) [Python | 파이썬] 등굣길 (프로그래머스 DYNAMIC PROGRAMMING) 이 문제는 dynamic programming을 이용해서 풀 수도 있지만 BFS를 이용해서 풀 수도 있다. 움직이는 방향은 최단거리를 유지해야하므로 오른쪽으로 가거나 아래로 가야한다. 최단경로의 갯수를 리턴해야하므로 처음에 maps[0][0]에서의 경로의 갯수는 1으로 시작한다. 그리고 queue에 현재 좌표를 삽입하고, queue에 원소가 남아있을 때까지 반복문에서 매번 pop해주며 현재 좌표에서 오른쪽이나 아래쪽으로 이동가능하다면 queue에 그 좌표를 삽입한다. 또한 mapx[nx][ny] += maps[x][y]로 경로를 추가해준다. 더보기 dx = [0, 1] dy = [1, 0] from collections.. [Python | 파이썬] 정수 삼각형 (프로그래머스 DYNAMIC PROGRAMMING) [Python | 파이썬] 정수 삼각형 (프로그래머스 DYNAMIC PROGRAMMING) 각 행마다 열의 개수는 각 행의 번호 + 1과 같다. 0행 => 1열 1행 => 2열 2행 => 3열 ... n번째 행 => n + 1개의 열이 존재 현재 열이 0 ( j == 0 )이라면 왼쪽 위는 j == -1이므로 불가능하고 오른쪽 위에서만 올 수 있다. 현재 열이 j == i라면 오른쪽 위는 불가능하고 왼쪽 위에서만 올 수 있다. 변수 triangle을 사용안하고 처음부터 dp를 사용해 푸는 방법 더보기 def solution(dp): answer = 0 n = len(dp) for i in range(1, n): for j in range(i+1): if j == 0: right = dp[i-1][j] l.. 이전 1 2 3 4 5 ··· 14 다음