알고리즘/Python 42

[백준/Python] 23288번 : 주사위 굴리기 2

📖 문제 링크 https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net ✅ 최종 코드 주사위 좌표 하나를 실수하는 바람에 1시간 증발 ^^ 제발 처음 적을때 확인 또 확인하면서 하자...... from collections import deque n, m, k = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] #동 = 0 #서 =..

알고리즘/Python 2022.04.29

[백준/Python] 21610번: 마법사 상어와 비바라기

📖 문제 링크 https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net ✅ 최종 코드 PyPy3로 제출! 좌표를 꼼꼼히 적자.... 삽질 그만... from collections import deque n, m = map(int, input().split()) board = [[0] * (n + 1)] + [[0] + list(map(int, input().split())) for _ in range(n)] # 1, 2, 3, 4, 5, 6, 7..

알고리즘/Python 2022.04.28

[백준/Python] 21608번 : 상어 초등학교

📖 문제 링크 https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net ✅ 최종 코드 n = int(input()) student = [] order = [] for i in range(n*n): num, a, b, c, d = map(int, input().split()) student.append([num, a, b, c, d]) order.append(num) board = [[0 for _ in range(n)] for _ in ran..

알고리즘/Python 2022.04.27

[백준/Python] 17144번: 미세먼지 안녕!

📖 문제 링크 https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 👩‍💻 문제풀이 오기로 푼 문제였다..... 구현 문제는 요구조건을 하나라도 놓치면 발견도 어렵고, 디버깅하느라 시간이 오래 걸려서 까다로운 것을 매번 느낀다. 그래도 모든 예제 케이스와 스몰케이스, 라지케이스를 전부 테스트한 후 제출해보았다. 파이썬은 당연히 시간 초과가 났고...ㅎㅎ 심지어 PyPy3로 제출했는데도 2852ms라는 엄청난 시간이 걸렸다. 그래서 대체 무엇이 문제..

알고리즘/Python 2022.04.21

[백준/Python] 7562번 : 나이트의 이동

📖 문제 링크 https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net ✅ 최종 코드 from collections import deque def bfs(): while check: x, y = check.popleft() if x == xd and y == yd: return board[x][y] for i in range(len(dx)): nx = x+dx[i] ny = y+dy[i] if 0

알고리즘/Python 2022.04.14

[백준/Python] 7576번: 토마토 (JAVA버전 추가)

📖 문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net ✅ 최종 코드 1. Python 버전 from collections import deque import sys input = sys.stdin.readline # 익은 : 1 # 익지않은 : 0 # 없음 : -1 #세로가 n m,n = map(int, input().split()) board = [list(map(int, input().split())) for _ i..

알고리즘/Python 2022.04.13

[백준/Python] 14503번: 로봇청소기

📖 문제 링크 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net ✅ 최종 코드 from collections import deque # 0:북 / 1:동 / 2:남 / 3:서 dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] def bfs(direction): global answer x, y = robot.popleft() if board[x][y] == 0: board[x][y] = 2 #벽이아닌, 청소한곳은 2 answe..

알고리즘/Python 2022.04.03

[백준/Python] 14499번 : 주사위 굴리기

📖 문제 링크 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 ✅ 최종 코드 from collections import deque def solution(): m, n, x, y, k = map(int, input().split()) board = [] for i in range(m): board.append(list(map(int, input().split()))) order ..

알고리즘/Python 2022.03.31

[백준/Python] 13458번 : 시험 감독

📖 문제 링크 https://www.acmicpc.net/problem/13458 13458번: 시험 감독 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) www.acmicpc.net ✅ 최종 코드 def solution(n, person, b, c): count = 0 for i in range(n): temp = person[i] - b count += 1 if temp>0: count += temp // c if temp % c: count+=1 return count n = int(input()) p..

알고리즘/Python 2022.03.30

[백준/Python] 10610번: 30

📖 문제 링크 https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 👩‍💻 문제풀이 당연히 순열로 풀어야 한다고 생각했다가 10^5라는 숫자를 모두 순열로 조회하기엔 시간이 너무 오래 걸린다는 걸 깨달았다. 그래서 검색해보니 30의 배수가 되려면 숫자에 0이 들어가야 하고, 각 자리 숫자를 모두 더했을 때 3으로 나눠 떨어지면 30의 배수가 될 수 있다는 것! 수포자인 나에게 이런 문제는 난감하지만 모르는 걸 채워간다는 생각으로 코드를 익혔다. 어렵지..

알고리즘/Python 2022.03.06