Python 234

[백준 16918번] 봄버맨

16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net r,c,n = map(int,input().split()) area = [list(input()) for _ in range(r)] flag = False dx = [-1,1,0,0] dy = [0,0,-1,1] for i in range(r): # 초기 상태에서 1초 지난 상태로 초기화 for j in range(c): if area[i][j] == "O": area[i][j] = 2 for _ in range(n-1): # n-1초 간 3 ~ 4과정 반복 for i in ran..

[백준 9079번] 동전 게임

9079번: 동전 게임 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 세 줄로 이루어지며, 한 줄에 세 개의 동전모양이 주어지는데, 각각의 동전 표시 사이에는 하나의 공백이 www.acmicpc.net from collections import deque t = int(input()) def reverse_row(area, index): # 행 단위로 동전을 뒤집는 함수 temp = [item[:] for item in area] for i in range(3): if area[index][i] == "H": temp[index][i] = "T" elif area[index][i] == "T": temp[index][i] = "H" return temp ..

[백준 5427번] 불

5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net # 상근이는 불이 옮겨진 칸과 불이 붙으려는 칸으로 이동 X # 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다. # 빌딩의 지도가 주어졌을때, 얼마나 빨리 빌딩을 탈출할 수 있는가(최단 시간) # 빌딩을 탈출하는 최단 시간, 불가능하다면 IMPOSSIBLE 출력 from collections import deque t = int(input()) dx = [-1,1,0,0] dy = [0,0,-1,1] for _ in range(t): w, h = ma..

Algorithm/BFS 2023.12.29

[코딩테스트 문제 풀이 전략] 시간 복잡도 / 시간 복잡도 줄이는 Tip

1. 시간 복잡도란 ? 코드를 실행하면 원하는 기능을 수행하고 종료되기까지 시간이 소요되는데, 이를 더 효율적이고 빠르게 작동시키고 싶다면 어느 알고리즘이 더 효율적인지 비교할 수 있는 '기준'이 필요하다. 문제 해결에 필요한 입력 값과 문제를 해결하는 프로그램이 주어졌을 때, 프로그램이 입력값을 받아 동작하고 결과를 만들어내는데 걸리는 정도를 복잡도라고 한다. 그 중에서 얼마나 시간이 걸리는지는 시간 복잡도로 평가하고, 얼마나 많은 메모리를 사용하는지는 공간 복잡도로 평가한다. 코딩테스트에서는 가장 먼저 제시된 '제한 시간'과 '메모리 사용량'을 확인한 후, 조건에 맞게 실행되도록 자료구조와 알고리즘을 선택하고 문제를 풀어야 한다 ⭐️⭐️⭐️⭐️ 🚨 프로그래머스에서는 특별한 언급이 없다면 제한 시간이 ..

Algorithm 2023.12.28

[코딩테스트 문제 풀이 전략] 코딩테스트 관련 Tip

1. 코딩테스트를 보는 이유 문제 해결 과정을 보기 위해 모든 것의 기초이자, 생각하는 실력을 다지기 위해 똑같은 결과물이라도 더 빠르고 효율적으로 해결하기 위해 2. 코딩테스트를 준비하는 과정 문제를 읽고 스스로 풀어보는 시간을 갖는다. 문제를 모두 풀었다면 과정을 되짚으면서 모범답안을 읽어본다. (문제를 어떻게 이해하고 접근했는지 살펴보고, 본인의 풀이와 어떤 점이 다른지와 어떤 점이 부족했는지 생각할 것) 설명이 이해되지 않는 부분은 체크하고 다시 풀이해본다. 💡 시간 복잡도란 ? 프로그램이 작동하는데 걸리는 시간을 평가하는 척도이자, 특징 크기의 입력에서 수행되는 연산의 횟수 💡 공간 복잡도란 ? 프로그램이 작동하는데 사용되는 메모리의 양을 평가하는 척도 3. 코드를 작성할 때 흔히 하는 실수 존..

Algorithm 2023.12.28

[백준 11501번] 주식

11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net t = int(input()) for _ in range(t): n = int(input()) prices = list(map(int,input().split())) answer = 0 maximum = prices[-1] for i in range(n-2,-1,-1): if prices[i] > maximum: maximum = prices[i] elif prices[i] < maximum: answer += (maximum - prices[i]) ..

Algorithm/Greedy 2023.12.28

[백준 20164번] 홀수 홀릭 호석

20164번: 홀수 홀릭 호석 호석이는 짝수랑 홀수 중에서 이니셜이 같은 홀수를 더 좋아한다. 운전을 하던 호석이는 앞차의 번호판이 홀수로 가득할 때 사랑스러움을 느낄 정도이다. 전화번호도 홀수만 있고 싶다. 그렇게 www.acmicpc.net # 주어진 수 N ( maximum: maximum = new_count return elif len(num_str) == 2: # 3. 수가 두자리이면 2개로 나눠서 합을 구하여 새로운 수로 생각 new_num = int(num_str[0]) + int(num_str[1]) new_str = list(str(new_num)) dfs(new_str, odd_count + current_odd_count) elif len(num_str) >= 3: # 4. 수가 세..

[백준 15721번] 번데기

15721번: 번데기 예를 들어 7명이 있고, 16번째 등장하는 “뻔”을 부른 사람의 번호를 알고 싶다면 입력은 7 16 0이다. 4명이 있고 6번째 등장하는 “데기”를 부른 사람의 번호를 알고 싶다면 입력은 4 6 1이며, 이 www.acmicpc.net # 뻔 - 데기 - 뻔 - 데기 - 뻔 - 뻔 - 데기 - 데기 # 뻔 - 데기 - 뻔 - 데기 (고정) + (뻔 x n) - (데기 x n) a = int(input()) # a

[백준 5052번] 전화번호 목록

5052번: 전화번호 목록 첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가 www.acmicpc.net import sys input = sys.stdin.readline t = int(input().rstrip()) for _ in range(t): n = int(input().rstrip()) cases = [] flag = True for _ in range(n): cases.append(input().rstrip()) cases.sort() # for i in range(len(cases)): # if flag: # break # f..

Algorithm/String 2023.12.13

[백준 1941번] 소문난 칠공주

1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net from itertools import combinations from collections import deque dx = [-1,1,0,0] dy = [0,0,-1,1] area = [list(input()) for _ in range(5)] positions = [] for i in range(5): for j in range(5): positions.append((i,j)) combs = list(combinations(positions,7)) answer ..