문제 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 정답 소스코드 (Python) n=int(input()) i=2 while i
문제 1522번: 문자열 교환 a와 b로만 이루어진 문자열이 주어질 때, a를 모두 연속으로 만들기 위해서 필요한 교환의 회수를 최소로 하는 프로그램을 작성하시오. 이 문자열은 원형이기 때문에, 처음과 끝은 서로 인접해 www.acmicpc.net 정답 소스코드 (Python) arr=input() result=[] size=arr.count('a') #윈도우 크기 for i in range(len(arr)): b_count=0 for j in range(size): index=i+j if index>len(arr)-1:index-=len(arr) #index가 리스트를 넘어간다면 -=리스트크기 해주기-> 원형 유지 if arr[index]=="b":b_count+=1 result.append(b_cou..
문제 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 정답 소스코드 (Python) from collections import deque n,k=input().split() n,k=int(n),int(k) field=deque() field.extend(list(map(int,input().split()))) step=0 robot=deque() robot.extend([False for i in range(n)]) #로봇이 있다면 true 없다면 false while True: step+..
문제 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 정답 소스코드 (Python) n=int(input()) arr=[] for i in range(n): #입력받기 l,h=input().split() arr.append([int(l),int(h)]) arr.sort() #정렬 arr_max,arr_max_index=0,0 for i in range(n): #최댓값 찾기 if arr_max
문제 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 정답 소스코드 (Python) Source 1 word=input() if list(word)==list(reversed(word)):print(1) else:print(0) Source 2 word=input() if word==word[::-1]:print(1) else:print(0) 풀이 (Python) 팰린드롬의 문제는 알고리즘 공부를 하다 보면 자주 마주치게 되는 유명한 문제이다. 다이나믹 프로그래밍(dp) 문제로 써도 활용되며, 이 문제와 같이 간단하게 문자열을 다루는 포인트의 문제로도 사용되기도 한..
문제 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타 www.acmicpc.net 풀이 (Python) e,s,m=map(int,input().split()) result,tmp=0,0 while True: result=s+tmp*28#태양 기준 해당 년도=나머지(s입력값)+몫(tmp)*28(태양 주기) E_mod=15 if result%15==0 else result%15#해당 년도 기준에 맞춰 지구 값 조절 M_mod=19 if result%19==0 else result%19#해당 년도 기준에 맞춰 달 값 조절 if E_mod==e an..
문제 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 (Python) n=int(input()) for i in range(1,n+2): tmp,tmp_sum=str(i),0 for j in range(len(tmp)):tmp_sum+=int(tmp[j]) #각 자리수 더하기 tmp_sum+=i #입력받은 숫자를 더하기 if tmp_sum==n:break #생성자인 경우 if i>n:print(0) #생성자가 없는 경우 예외처리 else:print(i) 설명 (Python) ..
문제 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 (Python) from collections import deque n=int(input()) arr=[] result=[] #각 단지의 집의 수 count=0 #result에 입력하기 위한 count변수 for _ in range(n):arr.append(list(map(int,list(input())))) visited=[[False for i in range(n)] for j in range(n)] #방문 여부 확인 def bfs(x,y): qu..
문제 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 (Python) N=int(input()) share=N//5 min_number=N kg5_count,kg3_count=0,0 for i in range(share,-1,-1): if (N-5*i)%3==0: kg5_count=i kg3_count=(N-5*i)//3 if min_number>kg5_count+kg3_count and(kg5_count>0 or kg3_count>0): min_number=kg5_count+kg3_count if kg5_coun..
문제 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 풀이 (Python) n=int(input()) count=0 while n>=0: if n%5==0: #5로 나눠진다면 전부 다 나누기 print(n//5+count) break n-=2 #-2반복 count+=1 #2원을 거슬러 준 횟수를 count에 저장 if n