본문 바로가기

PYTHON91

SWEA D3 14692. 통나무 자르기 (python) 통나무 자르기 풀이 어떻게 풀지 전체를 다 뒤지는 방식으로 해야 하나? 하다가 N이 10^9까지 있어서 전체를 다 뒤지는 방식이면, 2중 for문으로는 해결되지 않을 것이라 생각되었기에 테스트 케이스를 관찰했다. 감이 와서 시도해 보니 PASS 되었다. 먼저 시도하는 사람이 Alice이므로 N이 짝수이면, Alice가 이기고, 홀수라면 Bob이 이기는 게임이 된다. 먼저 마지막 2를 손대는 사람이 이기는데, 그게 짝수일 때는 처음 손댄사람, 홀수일 때는 뒤에 손 댄 사람 이기 때문이다. 따라서 아래처럼 풀었다. T = int(input()) people = ["Alice", "Bob"] for testcase in range(1, T+1): N = int(input()) if N %2 == 0: prin.. 2024. 2. 27.
SWEA D3 16002. 합성수 방정식 (python) 합성수 방정식 풀이 문제를 보면 알겠지만 x-y = N을 만족시키는 10^9 이하의 두 합성수 x와 y를 아무거나 하나 구하는 프로그램을 작성하라 위와 같은 내용이 적혀있다. 따라서 N만큼의 차이가 나는 두 합성수만 답으로 내놓으면 된다는 것이다. 그래서 난 (1,2),(2,3),(3,4).... 를 비교하면서 합성수가 되는지, 그리고 8,9가 될 때 둘 다 합성수였으므로, 뭘 곱해도 합성수가 될 테니, 이를 N에 곱한 것을 출력했다. 출력값에서는 먼저 출력되는 x가 y보다 큰 값이기 때문에 x = N 9 y = N 8 로 만들고 출력해주면 되었다. T = int(input()) for testcase in range(1, T+1): # 합성수 일단, 소수가 아닌 것. 음수나 0이 아닌것. N = int.. 2024. 2. 26.
SWEA D3 18662. 등차수열 만들기 (python) 등차수열 만들기 풀이 등차수열 문제이다. 문제에 안적힌 내용들이 있는데, 아래 먼저 푼 사람들의 내용을 보고 알았다. 주어지는 a,b,c의 순서는 바꿀 필요없다. 0의 출력은 0이 아니라 0.0으로 되어야한다. 테스트케이스중 0,2,1 의 경우 답이 1.5인데 이유는 2에서 1.5를 빼면 0,0.5,1 로 0.5를 값으로 하는 등차수열이 되기 때문이다. 또한 이 케이스에서 볼 수 있듯이 순서를 바꿔도 된다면 답은 0이 되어야하는데 그렇지가 않음을 확인할 수 있다. 난 아래처럼 풀었다. a,b,c 가 있을 때, c-b = b-a 가 되어야하고, 또한 이때 이게 성립하지 않으면 a,b,c중에 가장 작은 더하거나 뺄 x값을 정해줘야하는 문제이다. 그래서 solution이라는 함수를 생성하고 테스트 케이스를 이.. 2024. 2. 26.
SWEA D3 16910. 원 안의 점 (python) 원 안의 점 풀이 반지름이 N인 어떤 원안에 있는 점의 개수(격자 1칸이라고 생각하고 찍히는)를 구하는 것이다. 아주 간단한 방법인 이중 for문으로 해결했다. 다행히 시간초과도 나지 않았다. x아 y가 실제로는 -N~N의 범위를 가지면 되므로 이를 아래처럼 이중for문을 작성하고 if문을 통과하면 answer += 1을 하는 방법으로 했다. for i in range(-N, N+1): for j in range(-N, N+1): if (i**2 + j**2) 2024. 2. 25.
SWEA D3 17642. 최대 조작 횟수 (python) 최대 조작 횟수 풀이 문제를 보고 이 뭔 말이고... 하고 있었다. 그러다가 보다보니 최대한 많은 횟수로 조작해야 하고 소수를 사용해야 한다고 하는데, 대신 1이 아닌 수로 조작을 해야 된다고 한다. 우선 난 함수를 만들어서 풀이를 했다. 1. A>B 또는 B-A == 1이면 조작으로 해결이 불가능하므로 -1을 반환 2. A==B이면 조작할 필요가 없으니 0을 반환 3. 이외의 경우에는 홀수와 짝수일 때를 구분해서 짝수면 차이의 //2를 해주면 된다. 홀수도 마찬가지로 //2를 해주면 되는데 이유는 +2만 하다가 중간에(마지막이든 처음이든) +3만 한 번 해주면 해결되기 때문이다. 3-1. 그런 이유로 홀수든 짝수든 상관없이 (B-A) // 2의 값을 반환해 주면 된다. def solution(A,B):.. 2024. 2. 25.
백준 실버3 1003. 피보나치 함수 (python) 피보나치 함수 풀이 처음엔 문제에서 보이는 소스코드르 이용해서 python화 하고, 바로 그곳에 0이 출력된 개수와 1이 출력된 개수를 저장하는 변수를 이용해서 풀이했다. def fibonacci(n): global number0 global number1 if n == 0: number0 += 1 return 0 elif n == 1: number1 += 1 return 1 else: return fibonacci(n-1) + fibonacci(n-2) T = int(input()) for testcase in range(T): # 0이 출력되는 횟수와 1이 출력되는 횟수 N = int(input()) number0 = 0 number1 = 0 fibonacci(N) print(number0, numb.. 2024. 2. 24.