Loading...

[Python] BOJ 17406 - 배열 돌리기 4

https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net # 배열돌리기 시리즈 4번째 문제이다. # 문제에서 요구하는대로 시뮬레이션을 돌려주면 된다. import sys, copy from itertools import permutations input = sys.stdin.readline N, M, K = map(int,input().split()) m = [list(map(int,input().split())) for ..

[Python] BOJ 6137 - 문자열 생성

https://www.acmicpc.net/problem/6137 6137번: 문자열 생성 첫 번째 줄에 문자열 S의 길이 N이 주어진다. (N

[Python] BOJ 10844 - 쉬운 계단 수

https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net # 제목은 쉬운 계단수 이지만, 쉽지 않다.. (계단 수 문제가 더 쉬운듯) # 그냥 단순 DP문제이다! N = int(input()) # dp[i][j] = i자리수 중에서 j로 끝나는 수의 갯수 # dp[1]은 한자리수이므로 0,1,1,1,1,1,1,1,1이다. dp = [[0] * 10 for _ in range(N+1)] dp[1] = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in range(2, N+1): for j in range(10): # i자리수 중 0으로 끝나는 수는 ..

2021. 10. 16. 23:09

[Python] BOJ 1756 - 피자 굽기

https://www.acmicpc.net/problem/1756 1756번: 피자 굽기 첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 ≤ D, N ≤ 300,000) 둘째 줄에는 오븐의 최상단부터 시작하여 깊이에 따른 오븐의 지름이 차례대로 주어진다. 셋 www.acmicpc.net # 좀 생각을 해야하는 구현문제이다. # 피자는 위에서부터 들어가고 아래에서부터 쌓이기 시작하므로 반복문으로 오븐의 아래부분부터 확인해주면 된다. 하지만, 예제 처럼 오븐의 맨 아래 반지름이 3이고 첫번째 피자의 반지름이 3이어도 첫번째 피자는 오븐의 맨 아래에 도달할 수 없다. 맨 아래에서 두번째 오븐의 반지름이 2이기 때문이다. # 따라서, 오븐의 배열을 아래 사진과같이 재정렬해..

[Python] BOJ 11967 - 불켜기

https://www.acmicpc.net/problem/11967 11967번: 불켜기 (1, 1)방에 있는 스위치로 (1, 2)방과 (1, 3)방의 불을 켤 수 있다. 그리고 (1, 3)으로 걸어가서 (2, 1)방의 불을 켤 수 있다. (2, 1)방에서는 다시 (2, 2)방의 불을 켤 수 있다. (2, 3)방은 어두워서 갈 수 없으 www.acmicpc.net # BFS문제이다. 처음에 일반 bfs함수처럼 진행을 해봤다. 상하좌우로 이동하며 이동한 칸에서 불을 킬 수 있으면 불을 키고 다시 상하좌우로 이동... 문제예제에서 (1, 1)에서 (1, 2), (1, 3)을 간 뒤 (2, 1)에 불을 키는것 까지는 할 수 있지만, (1, 3)에서 (2, 1)은 갈 수가 없다. ((1, 2), (1, 1)이 ..

[Python] BOJ 1107 - 리모컨

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net # 처음에 어떻게 풀어야 하지 막막했는데,, 알고보니 그냥 무지성 완전탐색 문제였다. # M이 0일때는 remove_button이 주어지지않아 예외처리를 해주어야 한다. (안하면 EOF Error 발생..) N = int(input()) button = set(i for i in range(10)) M = int(input()) # button에서 사용할 수 없는 remove bu..

[Python] 2042 - 구간 합 구하기

https://www.acmicpc.net/problem/2042 2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net # 이름은 많이 들어봤지만, 차마 손을 대고 있지 않았던.. '세그먼트 트리'를 드디어 공부했다! # 원래 자료구조에서 트리단원을 빼고 공부해서 손을 안댄 이유도 있었고, 알고리즘 수업시간에 현재 트리(Red-Black트리, B-트리 등)를 배우고 있어서 이해가 쉬울 것 같아서 공부를 해보았다. import sys input = sys.s..

[Python] BOJ 2023 - 신기한 소수

https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net # 처음에 에라토스테네스의 체를 사용해서 N자리의 모든 수에 대한 소수판정 배열을 만들어서 제출했는데, 메모리초과가 발생했다. 다시 문제제한을 보니 메모리제한이 4MB로 매우 작다는 것을 발견했다.. # 따라서 각 자리수마다 숫자를 붙여가며 재귀함수를 돌려서 해결하였다. 어차피 맨 왼쪽 첫번째자리수 역시 소수여야 하므로 처음에 2,3,5,7로 첫번째자리를 시작하면 된다. 2,3,5,7 ..