Programmers / 2단계 / 삼각 달팽이 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/68645 나의 풀이 def solution(n): triangle = [ [0] * n for _ in range(n) ] answer = [] x, y = -1, 0 num = 1 for i in range(n): for j in range(i, n): if i % 3 == 0: x += 1 elif i % 3 == 1: y += 1 elif i % 3 == 2: x -= 1 y -= 1 triangle[x][y] = num num += 1 for i in range(n): for j in range(i+1): answer.append(triangle[i][j]) return answer trian..
Programmers / 3단계 / 두 큐 합 같게 만들기 / python / 2022 KAKAO TECH INTERNSHIP
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/118667 나의 풀이 from collections import deque def solution(queue1, queue2): q1 = deque(queue1) q2 = deque(queue2) s1 = sum(q1) s2 = sum(q2) sumnum = s1 + s2 if sumnum % 2 == 1: return -1 cnt = 0 while True: if s1 > s2 and len(q1) != 0: num = q1.popleft() q2.append(num) s1 -= num s2 += num cnt += 1 elif s2 > s1 and len(q2) != 0: num = q2.popl..
Programmers / 3단계 / 단속카메라 / python / 탐욕법(Greedy)
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42884 나의 풀이 def solution(routes): routes.sort(key = lambda x: x[1]) camera = -30001 cnt = 0 for route in routes: if route[0] > camera: cnt += 1 camera = route[1] return cnt 1. 최소한의 카메라를 설치하기 위해 진출 지점을 기준으로 정렬한다.2. 제한사항을 고려해 camera를 -30001으로 놓는다.3. routes를 돌며 차량의 진입 지점이 카메라의 위치보다 크면 카메라의 수(cnt)를 증가시킨다.4. camera를 차량의 진출 지점으로 놓고 반복한다
Programmers / 3단계 / 등굣길 / python / 동적계획법(Dynamic Programming)
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42898 모범 답안 def solution(m, n, puddles): puddles = [[q,p] for [p,q] in puddles] dp = [[0] * (m+1) for _ in range(n+1)] dp[1][1] = 1 for i in range(1, n+1): for j in range(1, m+1): if i == 1 and j == 1: continue if [i, j] in puddles: dp[i][j] = 0 else: dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % 1000000007 return dp[n][m] 웅덩이의 위치 puddles의 좌..
Programmers / 2단계 / 소수 찾기 / python / 완전 탐색
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/42839 모범 답안 from itertools import permutations def solution(n): a = set() for i in range(len(n)): a |= set(map(int, map("".join, permutations(n, i + 1)))) a -= set(range(0, 2)) for i in range(2, int(max(a) ** 0.5) + 1): a -= set(range(i * 2, max(a) + 1, i)) print(set(range(i * 2, max(a) + 1, i))) return len(a) 알게된 것 itertools의 permutation..
Programmers / 3단계 / 야근 지수 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/17679 나의 풀이 def solution(n, works): answer = 0 if sum(works) 5: print('hello') 위 예시처럼 대입 표현식을 사용하면 n을 조건문 안에서 선언하고 값을 대입할 수 있다. 참조 https://int-i.github.io/python/2020-05-29/python-walrus-operator/ Python 3.8 기여운 바다코끼리를 드리겟슴미다 := - 인하대학교 인트아이 파이썬 문법을 읽다, ‘바다코끼리 연산자’라고 불리는 기능을 발견했다. 찾아보니 2019년 10월에 정식 릴리즈된 파이썬 3.8에서 들어왔다고 하는데, 찾아보느라 이것저것 ....
Programmers / 2단계 / [1차]프렌즈4블록 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/17679 모범 답안 def pop_num(b, m, n): pop_set = set() # search for i in range(1, n): for j in range(1, m): if b[i][j] == b[i - 1][j - 1] == b[i - 1][j] == b[i][j - 1] != '_': pop_set |= set([(i, j), (i - 1, j - 1), (i - 1, j), (i, j - 1)]) # set_board for i, j in pop_set: b[i][j] = 0 for i, row in enumerate(b): empty = ['_'] * row.count(0) b[..
Programmers / 2단계 / 2 x n 타일링 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/12900 모범 답안 def solution(n): a, b = 1,1 for i in range(n): a, b = b, a+b return a 동적 계획법의 문제이다. 동적 계획법의 핵심은 점화실을 찾는 것이다. 점화식을 찾기 위해 예를 보면, n = 1: 1 ...................................... -> 1 n = 2: 11, 2 ................................. -> 2 n = 3: 111, 21, 12 ........................ -> 3 n = 4: 1111, 211, 112, 121, 22 ....... -> 5 여기서..