Programmers / 2단계 / 행렬 테두리 회전하기 / python
·
Coding Test/Programmers
출처: https://school.programmers.co.kr/learn/courses/30/lessons/77485 코드def solution(rows, columns, queries): matrix = [] tmp = [] for i in range(1, (rows * columns + 1)): tmp.append(i) if (len(tmp) == columns): matrix.append(tmp) tmp = [] rotation(matrix, queries) return answer answer = []def rotation(matrix, queries): global answer ..
Programmers / 2단계 / 수식 최대 / python / 2020 카카오 인턴십
·
Coding Test/Programmers
문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/67257  코드 from itertools import permutationsdef operation(num1, num2, op): if op == '+': return str(int(num1) + int(num2)) if op == '-': return str(int(num1) - int(num2)) if op == '*': return str(int(num1) * int(num2)) def calculate(expression, op): array = [] tmp = "" for i in expression: ..
Programmers / 3단계 / 가장 먼 노드 / python
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/49189# 코드from collections import dequedef solution(n, edge): graph = [[] for _ in range(n+1)] visited = [0] * (n+1) for e in edge: x, y = e[0], e[1] graph[x].append(y) graph[y].append(x) q = deque() q.append(1) visited[1] = 1 while q: p = q.popleft() for i in graph[p]: ..
Programmers / 3단계 / 무인도 여행 / python
·
Coding Test/Programmers
코딩테스트 연습 - 무인도 여행 | 프로그래머스 스쿨 (programmers.co.kr)  코드from collections import dequedef solution(maps): N, M = len(maps), len(maps[0]) visited = [[0] * M for _ in range(N)] queue = deque() answer = [] for i in range(N): for j in range(M): if maps[i][j] =='X' or visited[i][j]: continue queue.append((i,j)) visited[i][..
Programmers / 3단계 / 섬 연결하기 / python / Greedy / Kruskal 알고리즘
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/42861  코드def solution(n, costs): answer = 0 costs.sort(key = lambda x: x[2]) s = set([costs[0][0]]) while len(s) != n: for v in costs: if v[0] in s and v[1] in s: continue if v[0] in s or v[1] in s: s.update([v[0], v[1]]) answer += v[2] ..
Programmers / 3단계 / 징검다리 건너기 / python / 2019 카카오 개발자 겨울 인턴십
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/64062  코드def solution(stones, k): s = 1 e = max(stones) mid = (s + e) // 2 while s = k: e = mid -1 break else: cnt = 0 else: s = mid + 1 return s - 순차탐색으로는 효율성을 만족하기 어려우므로 이진탐색으로 답을 구해야 한다.- s는 1, e는 디딤돌의 최댓값, mid는 (s + e) //2로 설정하고, 디딤돌을 ..
Programmers / 2단계 / 방금그곡 / python / 2018 KAKAO BLIND RECRUITMENT
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/17683 코드def solution(m, musicinfos): m = m.replace('C#','c').replace('D#','d').replace('F#','f').replace('G#','g').replace('A#','a') answer = [] for music in musicinfos: s = int(music.split(',')[0].split(':')[0]) * 60 + int(music.split(',')[0].split(':')[1]) e = int(music.split(',')[1].split(':')[0]) * 60 + int(musi..
Programmers / 3단계 / 보석 쇼핑 / python
·
Coding Test/Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/67258  코드def solution(gems): size = len(set(gems)) dic = {gems[0]:1} temp = [0, len(gems) - 1] start , end = 0, 0 while(start  모든 종류의 보석을 1개 이상 포함하는 가장 짧은 구간을 구해야 하는 문제이다. 시간 복잡도를 고려해 슬라이싱 대신 투포인터와 딕셔너리를 이용하여 풀어야 한다. 처음에 포인터 start와 end를 모두 1번 진열대에 위치시키고, 보석의 종류가 모두 채워질 때까지 end를 증가시키면서 딕셔너리의 키와 값을 갱신한다. 종류가 모두 채워지면 가장 짧은 구간인..