본문 바로가기

전체 글

(116)
파이썬 | 백준 | 17822 | 원판 돌리기 solution 1. bfs 이용해 같은 수가 인접해있으면 0으로 바꿈 20%대에서 틀림 반례 찾아봐야 함 # 17822, 원판 돌리기 import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y, n): global flag q = deque() q.append((x, y)) visited[x][y] = 1 near = False while q: a, b = q.popleft() if a != 0: nx = a-1 if circle[nx][b] == n and visited[nx][b] == 0: near = True visited[nx][b] = visited[a][b]+1 q.append((nx,..
파이썬 | 프로그래머스 | 숫자 게임 solution 1 : 배열 이용 → 시간 초과 def solution(A, B): A = sorted(A, reverse=True) B = sorted(B, reverse=True) score = 0 i, j = 0, 0 while i -n : 우선순위 import heapq def solution(A, B): heapA = [] heapB = [] for i in range(len(A)): heapq.heappush(heapA, (-A[i], A[i])) hea..
파이썬 | 백준 | 1063 | 킹 solution 위아래 +,- 주의 # 1063, 킹 import sys def col(ch): return ord(ch)-ord('A')+1 def row(x): return 9-int(x) def row_reverse(x): return str(9-x) def col_reverse(x): return chr(x+ord('A')-1) def ans(x): ans = "" ans += col_reverse(x[1]) ans += row_reverse(x[0]) return ans def move(dir): if dir == "R": return (0, 1) elif dir == "L": return (0, -1) elif dir == "B": return (1, 0) elif dir == "T": ret..
파이썬 | 백준 | 2573 | 빙산 solution 1. dir4(x, y): 주변의 0 카운트하여 개수만큼 빙산을 녹임. 다 녹으면 -1로 만듦. (0으로 바로 만들면 인접한 빙산을 dir4()이용해 녹일 때 0 개수가 같이 카운트 되므로 일단 -1로 만들고 큐에 좌표 저장) 2. bfs_all() : 빙산의 덩어리를 세는 함수 * PyPy3로 제출 # 2573, 빙산 import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def dir4(x, y): zero = 0 for i in range(4): nx = x + dx[i] ny = y + dy[i] if 0
파이썬 | 프로그래머스 | 방문 길이 def dir(d, now): if d == "U": if now[1] == 5: return (now, now)# 범위를 벗어나면 현재 위치를 두 개 갖는 튜플 반환 return (now, (now[0], now[1] + 1)) elif d == "D": if now[1] == -5: return (now, now) return (now, (now[0], now[1] - 1)) elif d == "R": if now[0] == 5: return (now, now) return ((now[0] + 1, now[1]), now) else: if now[0] == -5: return (now, now) return ((now[0] - 1, now[1]), now) def solution(dirs): rout..
파이썬 | 프로그래머스 | 소수 만들기 # Summer/Winter Coding(~2018), 소수 만들기 import sys from itertools import combinations def isPrime(x): for i in range(2, x//2 + 1): if x % i == 0: return False return True def solution(nums): answer = 0 candidates = list(combinations(nums, 3)) for cand in candidates: if isPrime(sum(cand)): answer += 1 return answer 문제 출처 programmers.co.kr/learn/courses/30/lessons/12977 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개..
파이썬 | 프로그래머스 | 스킬트리 | for-else문 def solution(skill, skill_trees): answer = 0 for s in skill_trees: tmp = [] for i in range(len(s)): if s[i] in skill: tmp.append(s[i]) for i in range(len(tmp)): if tmp[i] != skill[i]: break else: answer += 1 return answer 문제 출처 programmers.co.kr/learn/courses/30/lessons/49993 코딩테스트 연습 - 스킬트리 programmers.co.kr
파이썬 | 백준 | 14499 | 주사위 굴리기 solution # 14499, 주사위 굴리기 import sys # 1:동 2:서 3:북 4:남 N, M, x, y, K = map(int, sys.stdin.readline().split()) coor = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] dir = list(map(int, sys.stdin.readline().split())) dice = [0] * 7 for i in range(K): # 동 if dir[i] == 1: if y + 1 < M: dice[4], dice[1], dice[3], dice[6] = dice[6], dice[4], dice[1], dice[3] if coor[x][y + 1] == 0: c..