Algorithm/programmers 43

자물쇠와 열쇠 ( Level 3, Python, 2020 Kakao Blind Recruitment )

def rotate(board): board = zip(*board[::-1]) return [list(b) for b in board] def solution(key, lock): n, m = len(key), len(lock) zero = sum(lock, []).count(0) lock = [[0] * 3 * m for _ in range(m)] +\ [[0] * m + lock[i] + [0] * m for i in range(m)] +\ [[0] * 3 * m for _ in range(m)] for _ in range(4): key = rotate(key) for i in range(3 * m - n): for j in range(3 * m - n): temp, count = 0, 0 for ..

합승 택시 요금 ( Level 3, Python, 2021 Kakao Blind Recruitment )

def solution(n, s, a, b, fares): INF = int(1e9) graph = [[0 if i == j else INF for i in range(n + 1)] for j in range(n + 1)] for f in fares: x, y, z = f graph[x][y] = graph[y][x] = z for k in range(1, n + 1): for x in range(1, n + 1): for y in range(1, n + 1): graph[x][y] = min(graph[x][y], graph[x][k] + graph[k][y]) ans = graph[s][a] + graph[s][b] for i in range(1, n + 1): ans = min(ans, graph[..

행렬 테두리 회전하기 ( Level 2, JavaScript, 2021 Dev-Matching )

행렬 테두리 회전하기 ( Level 2 ) 2021 Dev-Matching: 웹 백엔드 개발자(상반기) ( JavaScript ) 문제 링크 나의 풀이 function solution(rows, columns, queries) { const arr = Array(rows).fill(1) .map((el, i) => Array(columns).fill(el + i * columns) .map((a, i) => a + i) ) const res = [] while ( queries.length ) { const query = queries.shift(); let num = []; for ( let i = query[1]; i < query[3]; i++ ) num.push(arr[query[0]-1][i-1..

로또의 최고 순위와 최저 순위 ( Level 1, JavaScript, 2021 Dev-Matching )

로또의 최고 순위와 최저 순위 ( Level 1 ) 2021 Dev-Matching: 웹 백엔드 개발자(상반기) ( JavaScript ) 문제 링크 나의 풀이 function solution(lottos, win_nums) { let count = 0, zero = 0; for ( let i = 0; i < lottos.length; i++ ) { if ( win_nums.includes(lottos[i]) ) count ++ if ( lottos[i] === 0 ) zero++ } if ( !count && !zero ) return [6,6] return [Math.max(7-count-zero, 1), Math.min(7-count, 6)] } 0과 이외의 숫자 개수를 센 뒤 등수 계산

괄호 회전하기 ( Level 2, JavaScript, 월간 코드 챌린지 시즌2 )

괄호 회전하기 ( Level 2 ) Programmers 월간 코드 챌린지 시즌2 ( JavaScript ) 문제 링크 나의 풀이 function solution(s) { let res = 0; for ( let i = 0; i < s.length; i++ ) { const arr = []; let str = s.slice(i) + s.slice(0,i) for ( let j = 0; j < str.length; j++ ) { switch ( str[j] ) { case '(': case '[': case '{': arr.push(str[j]) break; case ')': arr.slice(-1)[0] === '(' ? arr.pop() : arr.push(str[j]) break; case ']': ..