Coding Test
양과 늑대 (DFS)
https://school.programmers.co.kr/learn/courses/30/lessons/92343 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr """ 2 ≤ info의 길이 ≤ 17 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. """ def solution(info, edges): answer = [] n = len(info) # 노드수 def dfs(scnt, wcnt)..
신고 결과 받기 (구현)
array [] tuple () dictionary {} def solution(id_list, report, k): answer = [0] * len(id_list) r = {x: 0 for x in id_list} for x in set(report): r[x.split()[1]] += 1 for x in set(report): s, e = x.split() if r[e] >= k: answer[id_list.index(s)] += 1 return answer
K진수에서 소수의 개수 구하기
def solution(n, k): import math # k진수 변환 word = '' while n: word = str(n % k) + word n = n // k arr = word.split("0") answer = 0 for i in arr: if len(i) == 0: continue if int(i) < 2: continue flag = True for j in range(2, int(math.sqrt(int(i)) + 1)): if int(i) % j == 0: flag = False break if flag: answer += 1 return answer print(solution(437674,3))
표병합 (구현, 유니온파인드)
""" UPDATE r c value : (r,c) value 저장 UPDATE value1 value2 : value1값 value2로 변경 MERGE r1 c1 r2 c2 : (r1, c1) 위치의 셀과 (r2, c2) 위치의 셀을 선택하여 병합 UNMERGE r c: 병합을 해제 PRINT r c : (r, c) 위치의 셀 출력 """ def solution(commands): n=50 board=[[(i,j) for j in range(n)] for i in range(n)] # 좌표 넣고 병합셀이면 좌측좌표 저장 str_board=[['EMPTY']*n for _ in range(n)] # 값 저장 answer = [] for c in commands: arr=c.split() if arr[0]..
개인정보 수집 유효기간 (문자열, 구현)
""" 오늘 날짜를 의미하는 문자열 today, 약관의 유효기간을 담은 1차원 문자열 배열 terms 1 ≤ terms의 길이 ≤ 20 수집된 개인정보의 정보를 담은 1차원 문자열 배열 privacies 1 ≤ privacies의 길이 ≤ 100 파기해야 할 개인정보의 번호를 오름차순으로 1차원 정수 배열에 담아 return """ def solution(today, terms, privacies): answer = [] #오늘 날짜 nyear = int(today[:4]) nmonth = int(today[5:7]) nday = int(today[8:]) for i in range(len(terms)): for j in range(len(privacies)): if terms[i][0] == priva..
[14891] 톱니바퀴 (deque, rotate)
14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 """" 톱니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니의 극이 다르다면, B는 A가 회전한 방향과 반대방향으로 회전하게 된다 1~4 톱니바퀴 상태 12시방향부터 시계방향 순서(N극 0, S극 1) 회전 횟수 K(1 ≤ K ≤ 100) 톱니바퀴의 번호, 방향(1 시계, -1 반시계) 1번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 1점 2번 톱니바퀴의 12시방향이 N극이면 0점, S극이면 2점 3번 톱니바퀴의 12시방향이 N..
[11559] Puyo Puyo
11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 풀이 """ 같은 색 뿌요가 4개 이상 상하좌우로 연결되어 있으면 연결된 같은 색 뿌요들이 한꺼번에 없어진다. 이때 1연쇄가 시작된다. 상대방의 필드가 주어졌을 때, 연쇄가 몇 번 연속으로 일어날지 계산 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. 입력으로 주어지는 필드는 뿌요들이 전부 아래로 떨어진 뒤의 상태이다. 몇연쇄가 되는지 출력 '""" im..
[15686] 치킨 배달 (DFS, 브루트포스, 백트래킹)
15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 분석 피자 배달 거리 (삼성 SW역량평가 기출문제 : DFS, 조합) 분석 karla.tistory.com 풀이 """ 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 도시에 있는 치킨집 중에서 최대..
[12100] 2048 (Easy)
12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 분석 네 방향으로 dfs 를 통해 다섯번 밀면서 보드의 최댓값 갱신 풀이 """ 2048 게임은 보드의 크기가 N×N 이다. 보드의 크기와 보드판의 블록 상태가 주어졌을 때, 최대 5번 이동해서 만들 수 있는 가장 큰 블록의 값 블록이 추가되는 경우는 없다 이동하려고 하는 쪽의 칸이 먼저 합쳐진다. 예를 들어, 위로 이동시키는 경우에는 위쪽에 있는 블록이 먼저 합쳐지게 된다 최대 5번 이동시켜서 얻을 수 있는 가장 큰 블록을 출력한다...
[18808] 스티커 붙이기
18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net 풀이 """ 가장 위, 왼쪽부터 붙임 자리없으면 시계방향으로 90도 회전 0도, 90도, 180도, 270도 회전해도 없으면 버림 노트북 세로, 가로 N,M(1 ≤ M ≤ 40), 스티커 개수 K(1 ≤ K ≤ 100) i번째 스티커가 인쇄된 모눈종이의 행의 개수와 열의 개수를 나타내는 Ri(1 ≤ Ri ≤ 10)와 Ci(1 ≤ Ci ≤ 10) Ri개의 줄에는 각 줄마다 모눈종이의 각 행을 나타내는 Ci개의 정수가 한 개 첫째 줄에 주어진 스티커들을 차례대로 붙였을..