백준 13

[python] 백준 4504: 배수 찾기

https://www.acmicpc.net/problem/4504 목록안의 값이 초기값의 배수인지 아닌지를 판단하는 문제이다. #백준 4504: 배수 찾기n = int(input())while True: num = int(input()) if num == 0: break if num % n == 0: print(f"{num} is a multiple of {n}.") else: print(f"{num} is NOT a multiple of {n}.") 풀이법: While문을 이용하여 간단히 처리 할 수 있었다. 입력한 값에서 Mod연산을 한 결과 0으로 떨어진다면 배수이고, 아닐 시에는 예외처리를 함으로써 문제를 해결할 수 있었다.

IT/Algorithm 2025.03.26

[python] 백준 1922: 네트워크 연결

https://www.acmicpc.net/problem/1922 노드와 간선을 활용하여 비용의 합을 구하고, 출력하는 문제이다. "최소 스패닝 트리" 라는 문제라고 한다. 해당 문제를 풀기 위한 알고리즘은  "크루스칼 알고리즘" 이라고 함. 간선을 비용 순서로 정렬하여, 비용이 작은 간선부터 사이클이 생기지 않도록 연결하고, 사이클을 감지하는 식으로 진행한다. #백준 1922: 네트워크 연결import sysinput = sys.stdin.readlinedef find_parent(parent, x): if parent[x] != x: #if parent[x] != x: parent[x] = find_parent(parent, parent[x]) #parent[x] = find_parent(parent..

IT/Algorithm 2025.03.22

[python] 백준 12865: 평범한 배낭

https://www.acmicpc.net/problem/12865 dp 문제이다.  #백준 12865: 평범한 배낭n,k = map(int,input().split())dp = [[0]*(k+1) for _ in range(n+1)]for i in range(1,n+1): w,v = map(int,input().split()) for j in range(1,k+1): #무게 1->k까지 if j w: #j가 w보다 작으면 dp[i][j] = dp[i-1][j] #이전값을 그대로 else: #j가 w보다 크거나 같으면 dp[i][j] = max(dp[i-1][j],dp[i-1][j-w]+v) #이전값 or 이전값에서 w를 뺀값+현재값 중 큰값으로 업데이트 print(dp[n][k]) 핵심 아이디어: ..

IT/Algorithm 2025.03.18

[python] 백준 1024: 수열의 합

https://www.acmicpc.net/problem/1024 [코드]#백준 1024: 수열의 합n,l = map(int,input().split())for i in range(l, 101): x = n/i - (i+1)/2 if int(x) == x: x = int(x) if x + 1 >= 0: for i in range(x+1, x+i+1): print(i, end=" ") breakelse: print(-1) 풀이법: 수학수열의 시작점과 길이를 계산하는 것이 전부이다. 단 브루트 포스 형식으로 전체를 대입할 경우에는 시간 초과가 발생하기 때문에 수열의 시작점의 값이 (위의 코드에서는 변수 x) 정수이면서 0 이상인지를 파악해야 한다. 그리고 조건을 만족하는 수열이 있으면 수열을 출력하고 그렇지..

IT/Algorithm 2025.03.15

[python] 백준 1011: Fly me to the Alpha Centauri

https://www.acmicpc.net/problem/1011  단순한 계산 문제이다.  #백준 1011: Fly me to the Alpha Centaurit = int(input()) #테스트 케이스의 개수for _ in range(t): x, y = map(int, input().split()) distance = y - x count = 0 move = 1 #이동 횟수 move_sum = 0 #이동한 거리 while move_sum distance: #이동한 거리가 총 거리보다 작다면 count += 1 #이동 횟수 증가 move_sum += move #이동한 거리 증가 if count % 2 == 0: #이동 횟수가 2의 배수일 때 move += 1 #이동 거리 증가 print(count)..

IT/Algorithm 2025.03.15

[python] 백준 1019 : 책 페이지

https://www.acmicpc.net/problem/1019 백준의 1019번 문제인, 책 페이지이다. 다이나믹 프로그래밍을 통해 접근하면 어렵지 않게 풀 수 있다. [전체 코드]#백준 1019: 책 페이지n = int(input())num = [0] * 10start = 1end = nfactor = 1#start가 end보다 작거나 같을 때까지 반복while start end: #start가 end보다 작거나 같을 때까지 반복 while start % 10 != 0 and start end: #start가 10으로 나누어 떨어지지 않고 start가 end보다 작거나 같을 때까지 반복 for i in str(start): #start 값 str으로 변환 후 대입 num[int(i)] += fa..

IT/Algorithm 2025.03.14

[python] 백준 10807 : 개수 세기

https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net BOJ의 기본 리스트 문제이다. # 백준 10807 N = int(input()) N_list = list(map(int,input().split())) v = int(input()) print(N_list.count(v)) 문제의 조건에 따라 N의 개수를 입력받는다. 그리고 N_list를 map 형식으로 들어올 수 있게 설정한다. 다음으로 v값을 입력받는다. (v값은 특정 정수값) ..

IT/Algorithm 2023.11.27

[python] 백준 10988 : 팰린드롬인지 확인하기

https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 백준의 10988번 문제이다. 팰린드롬이란 앞으로 읽을 때와 뒤로 읽을 때가 같은 단어이다. 앞부터 읽는다는 표시는 [::1]로 표현하며, 뒤에서부터 읽는다는 표기는 [::-1]로 진행한다. #백준 10988 N = input() if N[::1] == N[::-1]: print(1) else: print(0) [::1] 값이 [::-1]과 같다면 1을, 그렇지 않다면 0을 출력하게 설정하여 출력하였다.

IT/Algorithm 2023.11.26

[python] 백준 10699 : 오늘 날짜

현재 연월일을 출력하는 예제이다. 문제의 조건 중, 표준 시간대보다 한국의 시간대는 9시간 빠르므로, 표준 시간대에 맞추어 9시간을 더해주어야 한다는 것이 핵심이다. 우선 datetime이라는 함수를 import 한다. 그리고 # 9시간을 더함 new_datetime = current_datetime + datetime.timedelta(hours=9) new datetime함수를 현재 시간에서 9시간을 더한다. # "YYYY-MM-DD" 형식으로 출력 formatted_date = new_datetime.strftime("%Y-%m-%d") print(formatted_date) 출력으 %Y-%m-%d형식으로 나타내라고 했으므로 이에 맞추어 진행시켜주면 된다. 그러면 서울의 현재 시간이 정상적으로 출력..

IT/Algorithm 2023.11.06
반응형