파이썬 144

[프로그래머스] 해시 level3 베스트 앨범, python

https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr def solution(genres, plays): # 0 해시 생성 genre_set = set() genre_dict = dict() genre_play_dict = dict() # 1 입력 for i in range(len(genres)): if genres[i] not in genre_set: genre_set.add(ge..

STUDY/Algorithm 2021.12.26

[백준] 1987 알파벳 python(pypy), c

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net import sys; input = sys.stdin.readline def backtrack(r, c): global answer # 1 길이 갱신 answer = max(answer, len(alphabet)) # 2 탐색 for i in range(4): nr = r + dr[i] nc = c + dc[i] if 0

STUDY/Algorithm 2021.10.26

[백준] 14499 주사위 굴리기 python

https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지도 www.acmicpc.net # https://www.acmicpc.net/problem/14499 import sys; input = sys.stdin.readline def rollingDice(d, dice): # d: rolling direction 1 east, 2 west, 3 north, 4 south # dice: 1 top, 6 bottom #..

STUDY/Algorithm 2021.10.17

[백준] 3190 뱀 python

https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net # import sys; input = sys.stdin.readline from collections import deque N = int(input()) K = int(input()) apples = set([tuple(map(int, input().split())) for _ in range(K)]) L = int(input()) change = [input().split() for _ in ran..

STUDY/Algorithm 2021.10.14

[백준] 2021 최소 환승 경로 python

https://www.acmicpc.net/problem/2021 2021번: 최소 환승 경로 첫째 줄에 역의 개수 N(1≤N≤100,000), 노선의 개수 L(1≤L≤100,000)이 주어진다. 다음 L개의 줄에는 각 노선이 지나는 역이 순서대로 주어지며 각 줄의 마지막에는 -1이 주어진다. 마지막 줄에는 출발 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque N, L = map(int, input().split()) station = [list() for _ in range(N+1)] line = [list() for _ in range(L)] for i in range(L): tmp = list(m..

STUDY/Algorithm 2021.08.15

[백준] 1912 연속합, python, C

https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net N = int(input()) nums = list(map(int, input().split())) dp = [-200000000 for _ in range(N + 1)] for i in range(N): dp[i + 1] = max(dp[i] + nums[i], nums[i]) print(max(dp)) 처음엔 슬라이딩 윈도우라고 생각해서 브루트포스 방식으로 접근했는데 시간초과가 나왔다. O(N^2) 그래..

STUDY/Algorithm 2021.07.27

[백준] 18352 특정 거리의 도시 찾기 python

https://www.acmicpc.net/problem/18352 18352번: 특정 거리의 도시 찾기 첫째 줄에 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시의 번호 X가 주어진다. (2 ≤ N ≤ 300,000, 1 ≤ M ≤ 1,000,000, 1 ≤ K ≤ 300,000, 1 ≤ X ≤ N) 둘째 줄부터 M개의 줄에 걸쳐서 두 개 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque N, M, K, X = map(int, input().split()) linked_list = [list() for _ in range(N + 1)] for i in range(M): s, e = map..

STUDY/Algorithm 2021.07.27

[백준] 16236 아기 상어, python

https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net import sys; input = sys.stdin.readline from collections import deque def search(start, size, board): d = [(-1, 0), (0, -1), (0, 1), (1, 0)] ret = [] visit = [[-1 for _ in range(N)] for _ in range(N)] visit[start[0]][sta..

STUDY/Algorithm 2021.07.22

[백준] 20057 마법사 상어와 토네이도 python

https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net import sys; input = sys.stdin.readline def sand_move(pos, direction_ind, matrix): rate = [2, 10, 7, 1, 5, 10, 7, 1, 2] sand_matrix = [ [(-2, 0), (-1, -1), (-1, 0), (-1, 1), (0, -2), (1, -1), (1, 0), (1, 1)..

STUDY/Algorithm 2021.07.20

[프로그래머스] 캐시, 2018 KAKAO BLIND RECRUITMENT[1차], python

https://programmers.co.kr/learn/courses/30/lessons/17680?language=python3# = cacheSize: cache_set.remove(cache.popleft()) if cacheSize: cache_set.add(city) cache.append(city) answer += 5 return answer set 을 사용해서 중복이 있는지 확인했다. 그리고 deque를 사용하여 사용된 값은 맨뒤로 보내는 작업을 했다. 더보기 from collections import deque def solution(cacheSize, cities): answer = 0 cache = deque() for i in range(len(cities)): city = cit..

STUDY/Algorithm 2021.07.19