알고리즘 공부 202

(Python)백준 코딩테스트 연습 - 토마토(7576)

1. 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # m, n : 상자의 가로, 세로 칸 수 m, n = map(int, input().split()) # boxL : box 정보를 담은 리스트 boxL = [list(map(int, input().split())) for i in rang..

(Python)백준 코딩테스트 연습 - 숨바꼭질 3(13549)

1. 문제 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # n, k : 수빈이와 동생의 위치 n, k = map(int, input().split()) positionList = [-1] * 100001 q = deque() q.append(n) positionList[n]..

(Python)백준 코딩테스트 연습 - AC(5430)

1. 문제 https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline from collections import deque # t : 테스트 케이스 수 t = int(input()) for i in range(t): order = list(input().strip()) n = int(input()) p = input().strip() if n < order.count("D"): print("error") continue pList =..

(Python)백준 코딩테스트 연습 - 컴백홈(1189)

1. 문제 https://www.acmicpc.net/problem/1189 1189번: 컴백홈 첫 줄에 정수 R(1 ≤ R ≤ 5), C(1 ≤ C ≤ 5), K(1 ≤ K ≤ R×C)가 공백으로 구분되어 주어진다. 두 번째부터 R+1번째 줄까지는 R×C 맵의 정보를 나타내는 '.'과 'T'로 구성된 길이가 C인 문자열이 주어진다 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline r, c, k = map(int, input().split()) mapList = [list(input()) for i in range(r)] kCnt = 0 def searchMap(mapList, nowR, nowC, moveCnt): global kCnt if no..

(Python)백준 코딩테스트 연습 - RGB거리(1149)

1. 문제 https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline n = int(input()) rgbList = [list(map(int, input().split())) for i in range(n)] dp = [rgbList[0]] for i_k, i_v in enumerate(rgbList[1:]): tempList = [] for j_k, j..

(Python)백준 코딩테스트 연습 - 팔(1105)

1. 문제 https://www.acmicpc.net/problem/1105 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline l, r = map(str, input().split()) answer = 0 if len(l) == len(r): for i in range(len(l)): if l[i] == r[i]: if l[i] == "8": answer += 1 else: break print(answer)

(Python)백준 코딩테스트 연습 - 행렬(1080)

1. 문제 https://www.acmicpc.net/problem/1080 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n, m : 행렬 크기 n, m = map(int, input().split()) a_array = [] b_array = [] for i in range(n): a_array.append(list(input())) for i in range(n): b_array.append(list(input())) cnt = 0 f..

(Python)백준 코딩테스트 연습 - Z(1074)

1. 문제 https://www.acmicpc.net/problem/1074 1074번: Z 한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline n, r, c = map(int, input().split()) baseNum = 0 rStrIdx = 0 rEndIdx = (2 ** n) - 1 cStrIdx = 0 cEndIdx = (2 ** n) - 1 while True: if n == 1: break if rStrIdx

(Python)백준 코딩테스트 연습 - 물병(1052)

1. 문제 https://www.acmicpc.net/problem/1052 1052번: 물병 지민이는 N개의 물병을 가지고 있다. 각 물병에는 물을 무한대로 부을 수 있다. 처음에 모든 물병에는 물이 1리터씩 들어있다. 지민이는 이 물병을 또 다른 장소로 옮기려고 한다. 지민이는 한 번 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 물병 수, k : 옮길 수 있는 물병 수 n, k = map(int, input().split()) if n

(Python)백준 코딩테스트 연습 - -2진수(2089)

1. 문제 https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 2. 풀이 import sys input = sys.stdin.readline # n : 2진수로 변환할 10진수의 제곱 수 n = int(input()) result = "" while True: if n == 0: result = "0" + result break remain = n %..