BOJ
-
[Python] BOJ 1018 체스판 다시 칠하기카테고리 없음 2025. 12. 9. 11:00
1. 요구사항시간 제한: 2초메모리제한: 128MB보드 안에서 시작 가능한 모든 8x8 시작 위치를 고르고w로 시작 체스판과 비교했을 때, 다시 칠해야 하는 칸 수b로 시작 체스판과 비교했을 때, 다시 칠해야 하는 칸 수둘 다 계산해서 더 작은 값만 취함. 2. 설계N, M 을 입력 받는다.board 를 입력 받아 초기화한다.answer = 64최대로 다시 칠해야 하는 경우의 수는 64번이다. 최대 8x8 이니시작점 i, j의 범위는 (N - 7) (M - 7) - 7 인 이유 시작인덱스는 0 ~ 전체길이 -8 까지 가능0을 포함해야 하기 때문에 -7cnt_w = 0, cnt_b = 0시작점마다 w, b 각각 칠해야하는 경우의 수를 카운트한다.이제 각 시작점 마다 돌아야한다.현재 위치 r, c 의 범위는..
-
[Python] BOJ 19532 수학은 비대면강의입니다코딩테스트/백준 2025. 12. 4. 11:40
1. 요구사항시간 제한: 1초 메모리 제한 1024MB 주어진 수로 x, y 값을 구해라. 2. 설계6개의 문자값을 받는다. 이중 for문으로 x와 y값을 찾아낸다. ( 시간복잡도의 경우 O(n**2) 이겠지만, 모든 연산을 다해도 4,000,000 안전 )3. 구현import sysinput = lambda : sys.stdin.readline().rstrip()a, b, c, d, e, f = map(int, input().split())for x in range(-999, 1000): for y in range(-999, 1000): if (a * x + b * y == c) and (d * x + e* y == f): print(x, y) ..
-
[Python] BOJ 15596 정수 N개의 합코딩테스트/백준 2025. 4. 22. 17:14
요구사항시간 제한: 0.1초메모리 제한: 512MB정수 n개가 주어졌을 때, n개의 합을 구하는 함수를 작성문제 이해def solve(a: list): 라는 함수를 짜야함.예를 들어, a = [1, 2, 3] 이라면 solve() 는 이들의 합인 6을 return설계리스트를 순회하며, 이들의 합을 구함.구현ef solve(a: list): total = 0 for num in a: total += num return total# a = [1, 2, 3]# print(solve(a))
-
[Python] BOJ 2798 블랙잭코딩테스트/백준 2025. 3. 26. 16:47
총 걸린 시간1631-1641요구사항시간 제한: 1초메모리 제한: 128MBN장의 카드 중 3장의 카드의 합이 최대한 M과 가까운 숫자들의 합을 구해라. 3장을 찾을 수 있는 경우만 입력으로 주어진다. 설계combinations 라이브러리를 불러와 3장의 조합을 구한다. 조합을 돌며 조합의 합이 M 보다 작을 때, 체크하며 가장 큰 값을 구한다. 구현from itertools import combinationsimport sysinput = lambda : sys.stdin.readline().rstrip()N, M = map(int, input().split())numbers = map(int, input().split())num_list = list(combinations(numbers, 3))max..
-
[Python] BOJ 2231 분해합코딩테스트/백준 2025. 3. 26. 13:23
총 걸린 시간 1254 - 1310 (16min)요구사항 시간 제한: 2초메모리 제한: 192MB자연수 N의 가장 작은 생성자를 구하라.설계브루트 포스를 해야 된다 생각했다. 그 이유는 그 경우의 수 말고 방법이 안보인다. 해당 문제의 경우 생성자가 여러 개인 자연수도 있을 수 있고 없을 수 있다 했다. 하지만 이 두 가지 경우에 어떻게 출력해라 명시되어 있지 않으므로 임의로 가장 작은 생성자를 찾으면 프로그램을 종료하도록, 생성자를 찾지 못하면 0을 출력하도록 설계했다. 구현import sysinput = lambda: sys.stdin.readline().rstrip()N = int(input())# N의 가장 작은 생성자를 찾기 위한 브루트포스for i in range(1, N + 1): #..
-
[Python] BOJ 7562: 나이트의 이동코딩테스트/백준 2024. 11. 27. 11:20
https://www.acmicpc.net/problem/7562요구사항시간제한: 1초 메모리제한 : 256MB나이트의 시작점에서 도착점까지의 최소 거리를 구하라설계우선 , 나이트가 이동할 수 있는 방향을 모두 적는다.나이트는 한 자리에서 최대 8곳으로 이동할 수 있다. BFS로 푼다. 구현from collections import dequeimport sysinput = lambda: sys.stdin.readline().rstrip()# 나이트는 한자리에서 최대 8곳을 방문할 수 있다. dx = [2, 1, -2, -1, 2, 1, -2, -1]dy = [1, 2, 1, 2, -1, -2, -1, -2]def bfs(init_x, init_y, destianation_x, destianation_y..
-
[Python] BOJ 10026: 적록색약코딩테스트/백준 2024. 11. 19. 20:39
요구사항시간제한 1초메모리 제한 128MB적록색약이 아닌 사람과 그런 사람이 볼 수 있는 구역의 수를 구하라. 설계적록색약이냐 아니냐를 플래그로 만들어서 bfs 함수에 넣어준다. 추가로 방문 여부와 count 값도 따로 만들어준다. 구현from collections import deque# 방향 벡터 (상, 하, 좌, 우)dx = [-1, 1, 0, 0]dy = [0, 0, -1, 1]def bfs(x, y, grid, visited, n, color_blind): queue = deque([(x, y)]) visited[x][y] = True current_color = grid[x][y] while queue: cx, cy = queue.popleft() ..
-
[Python] BOJ 7576: 토마토(feat. 3일 걸렸다.)언어/Python 2024. 11. 7. 08:06
https://www.acmicpc.net/problem/7576요구사항시간제한 1초O(n**2) 10,000,000 천만번 정도 연산이 최대니깐 괜찮다. 메모리 제한 256MB 넉넉할 거 같다. 며칠이 지나야 토마토들이 모두 익는 지, 최소 일수를 구해라설계BFS 방식으로 풀자. 익은 토마토들을 따로 빼준다. 방금 든 생각인데 여기서 익은 토마토가 없다면 print(-1) exit() 하는 것도 좋을 거 같다. 그럴 필요없겠다. while queue에서 걸린다, 그래도 뭐 빨리 발견하니깐 하는 게 좋은건가? 모르겠다. 익은 토마토를 BFS 방식으로 탐색해준다. 2 중 for문을 사용해서 최대값을 구한다. 구현(사실상 최종 코드는 블로그 맨 아래 참고)from collections import deque..