728x90

python 107

[백준] 9184 | 신나는 함수 실행 [파이썬/python]

문제link: https://www.acmicpc.net/problem/9184문제에서 제시하는 함수 w(a, b, c)의 실행 결과를 반환하는 문제이다. 접근문제에서 제시된 함수 w(a, b, c)는 재귀함수 형태라 효율적이지 않다.함수 w가 a, b, c 중 하나라도 0 이하일 때는 1을 반환하고 하나라도 20 이상일 때는 w(20, 20, 20)을 반환하기 때문에, 3차원 리스트 W를 만들어 W[0][0][0] ~ [20][20][20]의 값을 미리 계산해 저장한 후 사용했다. for문을 통해 a, b, c가 적은 것부터 구해 다음 값 계산에 활용했다.a == b == c == -1인 경우 프로그램을 종료한다.코드import sysinput = sys.stdin.readlinedef w(a, b, ..

알고리즘 2025.03.28

[백준] 3046 | R2 [파이썬/python]

문제link: https://www.acmicpc.net/problem/3046 접근S가 두 수 R1과 R2의 평균이므로 R1과 S 값으로 R2를 구할 수 있다.S = (R1 + R2) / 2 2S = (R1 + R2) 2S - R1 = R2따라서, 2*S - R1 값을 print했다. 외출할 일이 있어 늦게 귀가했는데 1일 1문제 풀기라는 계획은 또 놓치기 싫어서 아주아주 쉬운 문제를 풀었다...😅 어쩐지 꼼수를 쓴 것 같아 기분이 미적지근하다. 반성하는 마음으로 몇 문제 더 풀어야겠음. 코드R1, S = map(int, input().split())print(2*S - R1)

알고리즘 2025.03.27

[백준] 9663 | N-Queen [파이썬/python]

문제link: https://www.acmicpc.net/problem/9663NxN 크기의 체스판 위에 N개의 queen이 서로를 공격하지 못하도록 위치시키는 경우의 수를 구하는 문제이다. 접근알고리즘(백트래킹) 공부를 할 때 본 적 있는 문제라 반가웠다. 예전에 C++로 코드를 짜둔 게 있어서 python으로 바꿔 제출하려고 했는데 아래와 같이 시간 초과 오류가 났다. 코드 문제인 줄 알고 list도 set으로 바꾸고 이래저래 코드를 고쳐 제출했는데도 여전해서 난감했다...😅 결국 구글링했는데 PyPy3으로 제출해야 한다는 답을 얻었다! 더 이상의 코드 수정 없이 제출했다.체스판의 queen은 행, 열, 대각선 방향으로 이동할 수 있다. set col에 queen N개가 위치하는 열의 숫자를 저장하..

알고리즘 2025.03.25

[백준] 15652 | N과 M (4) [파이썬/python]

문제link: https://www.acmicpc.net/problem/15652중복조합을 구하는 문제이다. 접근백트래킹 알고리즘을 이용하였다. N과 M (2)에서 작성했던 코드를 응용했다.https://going-on.tistory.com/17 [백준] 15650 | N과 M (2) [파이썬/python]문제link: https://www.acmicpc.net/problem/15650입력받은 값에 따라 조합을 구하는 문제이다. 접근이전에 N과 M (1)을 풀 때 itertools를 사용했기 때문에 이번에는 itertools 대신 백트래킹 알고리즘을 활용해going-on.tistory.com 코드import sysinput = sys.stdin.readlinedef combination_rep(start..

알고리즘 2025.03.24

[백준] 15651 | N과 M (3) [파이썬/python]

문제link: https://www.acmicpc.net/problem/15651중복순열을 구하는 문제이다. 접근백트래킹 알고리즘을 이용해 코드를 작성했다. N과 M (2)의 코드를 변형하여 사용했다.https://going-on.tistory.com/17 [백준] 15650 | N과 M (2) [파이썬/python]문제link: https://www.acmicpc.net/problem/15650입력받은 값에 따라 조합을 구하는 문제이다. 접근이전에 N과 M (1)을 풀 때 itertools를 사용했기 때문에 이번에는 itertools 대신 백트래킹 알고리즘을 활용해going-on.tistory.com 코드import sysinput = sys.stdin.readlinedef permutation_rep..

알고리즘 2025.03.24

[백준] 15650 | N과 M (2) [파이썬/python]

문제link: https://www.acmicpc.net/problem/15650입력받은 값에 따라 조합을 구하는 문제이다. 접근이전에 N과 M (1)을 풀 때 itertools를 사용했기 때문에 이번에는 itertools 대신 백트래킹 알고리즘을 활용해 코드를 작성했다. 재귀함수를 이용했다. 코드import sysinput = sys.stdin.readlinedef combination(start): if len(tmp) == M: print(" ".join(map(str, tmp))) return for i in range(start, N + 1): tmp.append(i) combination(i + 1) tmp.pop..

알고리즘 2025.03.23

[백준] 15649 | N과 M (1) [파이썬/python]

문제link: https://www.acmicpc.net/problem/156491부터 N까지의 자연수 중 M개를 중복 없이 골라 나열하는 법을 모두 출력하는 문제이다. 접근파이썬의 itertools 라이브러리를 활용하면 쉽게 계산할 수 있다. permutations()로 수열을 모두 구한 후 for문으로 순회하며 출력해주었다. 코드import sysfrom itertools import permutationsinput = sys.stdin.readlineN, M = map(int, input().split())l = [x for x in range(1, N+1)]P = permutations(l, M)for p in P: print(' '.join(map(str, p)))

알고리즘 2025.03.21

[백준] 2447 | 별 찍기 - 10 [파이썬/python]

문제link: https://www.acmicpc.net/problem/2447재귀함수를 이용하여 가운데가 공백인 문자열을 출력하는 문제이다. 접근N*N 사이즈 리스트를 만든 후, 재귀함수를 통해 가운데 부분을 공백 문자열로 바꿔 주었다.코드import sysinput = sys.stdin.readlineN = int(input())S = [['*' for _ in range(N)] for _ in range(N)]def makeStar(a, b, N): if N != 1: tmp = N // 3 for i in range(a + tmp, a + tmp*2): for j in range(b + tmp, b + tmp*2): S[..

알고리즘 2025.03.20

[백준] 33541 | 2025는 무엇이 특별할까? [파이썬/python]

문제link: https://www.acmicpc.net/problem/33541주어진 연도 후 가장 빠른 '특별한 해'를 출력하는 문제이다. 접근이 문제에서 제시하는 '특별한 해'는 연도의 앞 두 자리와 뒤 두 자리를 더한 후 제곱한 값이 원래 연도와 같은 해이다.특별한 해인 연도를 미리 리스트에 저장하여 사용했다. 코드import sysinput = sys.stdin.readlineyear = []for i in range(32, 100): x2 = i * i y = x2 // 100 + x2 % 100 if i == y: year.append(x2) X = int(input())Y = -1for y in year: if y > X: Y = ..

알고리즘 2025.03.19
728x90