BOJ PS/Python
-
백준 7570 - 줄 세우기BOJ PS/Python 2023. 3. 2. 22:21
https://acmicpc.net/problem/7570 7570번: 줄 세우기 입력은 2 개의 줄로 이루어져 있다. 첫 줄에는 어린이 수를 나타내는 정수가 주어진다. 둘째 줄에는 처음에 줄서있는 어린이들의 번호가 차례대로 주어진다. 주어진 번호들 사이에는 공백이 하 www.acmicpc.net LIS 알고리즘인줄 알고 단순하게 LIS를 구현했으나 아니었다. 생각해보니 의미있는건 '연속하는' LIS였다. 왜냐하면, 연속하지 않은 LIS는 결국 움직여야 하는 상황이 생길 수 있기 때문이다. 예를 들어, 문제에 주어진 예시처럼 5 2 4 1 3으로 줄을 선 가운데, lis로 1 3을 골랐다고 생각해보자. 5, 2, 4만 움직여서는 예시 정답처럼 3번 앞에 답에 도달할 수 없다. 연속한 2 3을 lis로 골..
-
백준 1525 - 퍼즐 (Python)BOJ PS/Python 2023. 3. 1. 15:21
https://acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net from collections import deque answer="123456780" base="" moves=[1,-1,3,-3] for _ in range(3): a,b,c=input().split() base+=a+b+c state=set(base) # state에 방문 여부를 기록할 수 있도록 한다. q=deque([(base, 0)]) while q: c_s,c_t=q.popleft() if c_s==answer: print(c_t) exit(0) blank=c_s.in..
-
백준 17141 - 연구소 2 (Python)BOJ PS/Python 2023. 3. 1. 15:18
https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net 바이러스가 퍼지기 시작할 수 있는 곳이 최대 10개여서 단순 조합+bfs로 풀 수 있었다. import sys,itertools,copy from collections import deque input=sys.stdin.readline N,M=map(int,input().split()) lab=[] viruses=set() dy=[0,0,1,-1] dx=[1,-1,0,0] possibles=N*N # 벽을..
-
백준 14499 - 주사위 굴리기 (Python)BOJ PS/Python 2023. 2. 27. 09:28
https://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 삼성 기출 빡구현문제. x가 세로, y가 가로라고 되어 있다. 잘 읽자. import sys input=sys.stdin.readline N,M,s_y,s_x,K=map(int,input().split()) graph=[] for _ in range(N): graph.append(list(map(int,input().split()))) c..
-
백준 15684 - 사다리 조작 (Python)BOJ PS/Python 2023. 2. 26. 18:05
https://acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 소마 조지고 본 삼성 기출. 확실히 미리 문제 얼개를 짜고 푸니 훨씬 잘 풀린다. import sys,itertools input=sys.stdin.readline N,M,H=map(int,input().split()) # 우선 사다리를 구현한다. 높이를 y, 세로 줄 번호를 x로 한다. ladders=[[[] for _ in range (N+1) ] for _ in range(H+1)] ladders..
-
백준 11057 - 오르막 수 (Python)BOJ PS/Python 2023. 2. 24. 20:31
https://acmicpc.net/problem/11057 11057번: 오르막 수 오르막 수는 수의 자리가 오름차순을 이루는 수를 말한다. 이때, 인접한 수가 같아도 오름차순으로 친다. 예를 들어, 2234와 3678, 11119는 오르막 수이지만, 2232, 3676, 91111은 오르막 수가 아니다. 수 www.acmicpc.net 소마 기출문제집에 있던 간단한 dp 문제. N=int(input()) dp=[[1]*10 for i in range(N+1)] for i in range(2,N+1): # dp[i][j]는 i 자리수의 j로 끝나는 숫자의 개수이다. for j in range(10): dp[i][j]=sum(dp[i-1][:j+1])%10007 print(sum(dp[N])%10007)
-
백준 20057 - 마법사 상어와 토네이도 (Python)BOJ PS/Python 2023. 2. 23. 16:45
https://acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 오랜만에 푸는 삼성 기출. 재미있었다. 잘 만든 문제였고, 깔끔한 손맛에 군더더기 없는 1트클. import sys input=sys.stdin.readline N=int(input()) dusts=[] for _ in range(N): dusts.append(list(map(int,input().split()))) start_y,start_x=N//2,N//2 # 시작점..