본문 바로가기

전체 글

(32)
백준) 2635 - 파이썬 https://www.acmicpc.net/problem/2635 (실버 5) 2635번: 수 이어가기 첫 번째 수가 주어진다. 이 수는 30,000 보다 같거나 작은 양의 정수이다. www.acmicpc.net 입력 100 출력 8 100 62 38 24 14 10 4 6 내 풀이 코드로는 작성하지 못했다. 2번째 수를 선정하는 방법이 핵심이라고 생각했고, 규칙성을 찾거나 모든 경우를 구하거나 둘 중 하나일 것이라고 생각했다. 몇가지 케이스를 직접 적어보고 규칙성은 구하기 힘들다는 것을 판단, 모든 경우를 구하되 n값의 절반 이하는 산정하지 말고 구해보자는 식으로 접근했다. 그러나 반복문, 계산식을 구현하지 못했고 그로 인해 코드로 작성하지 못했다. 풀이 import sys input=sys.stdin..
백준) 2559 - 파이썬 https://www.acmicpc.net/problem/2559 (실버 3) 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net 입력 10 2 3 -2 -4 -9 0 3 7 13 8 -3 10 5 3 -2 -4 -9 0 3 7 13 8 -3 출력 21 31 내 코드 import sys input=sys.stdin.readline n,k=map(int,input().split()) t=list(map(int,input().split())) result=[] for i in range(n): resul..
실전 DFS, BFS (유형 정리) DFS, BFS 문제를 풀다보니 어려움이 생겨서 유형을 정리하고자 글을 남긴다. 아무래도 머리가 그닥 좋지 않아서 그런지 이해해서 푸는 것은 아직 어렵기에 대표적인 유형 3가지만 정리하려고 한다. 후에 문제를 많이 풀게 될 경우 추가로 정리할 예정이다. 참고로 여기 있는 코드들은 예시의 문제의 정답이 아님을 알린다. 1. 그래프 형태를 직접 쌍으로 받는 문제들 ex) https://www.acmicpc.net/problem/1260 (실버 2) 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www...
Python(파이썬) -Counter 클래스 Counter 클래스는 collections 모듈을 이용해서 별도 패키지 설치 없이 사용할 수 있는 함수이다. 여러 형태의 데이터를 인자로 받을 수 있으며 각 원소가 몇 번씩 나오는지 알려주는 함수이다. Counter 함수 사용 방법 1. >>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"]) Counter({'hi': 3, 'hey': 2, 'hello': 1}) Counter 클래스에 인자로 리스트를 넣을시 리스트 내부에서 몇번 나왔는지 출력된다. 2. >>> Counter("hello world") Counter({'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}) Counter 클래스에 인자..
SW Expert Academy) 17299. 최소 덧셈-파이썬 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYe7x0DKBJADFARP SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 입력 3 1743 123 3141592 출력 #1 60 #2 15 #3 1906 내 코드 T = int(input()) # 테스트 케이스의 갯수 for t in range(1, T + 1): # 테스트 케이스의 수만큼 반복, 1부터 시작 s=list(input()) # 숫자를 문자의 형태로 입력 받고 각각 리스트에 대입 result=list() # 각각 덧셈을 수행했을 때 결과값을 저장할 리스..
백준) 1920 - 파이썬 https://www.acmicpc.net/problem/1920 (실버 4 문제) 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net 입력 5 4 1 5 2 3 5 1 3 7 9 5 출력 1 1 0 0 1 내 코드 import sys N=int(sys.stdin.readline()) data1=list(map(int,sys.stdin.readline().split())) M=int(sys.stdin.readline()) data2=list(map(int,sys.s..
백준) 11399 - 파이썬 https://www.acmicpc.net/problem/11399 (실버 4 문제) 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 입력 5 3 1 4 3 2 출력 32 내 코드 N=int(input()) T=list(map(int,input().split())) T.sort() result=0 result2=0 temp=0 T_result=[] for i in T: result=i+temp temp=result T_result.append(temp) for j in T_result: result2+=j print(result2) 먼저 사..
그리디 알고리즘(Greedy Algorithm) 1. 정의 그리디 알고리즘이랑 당장의 직면한 상황에서 최선의 수를 골라서 진행하는 알고리즘이다. 보통 코딩테스트에서는 그리디 알고리즘 유형이 나올 경우 최선의 수를 골라 진행하면 최적의 해가 산출된다. 2. 활용 사례 1) 거스름돈 문제: n=1260 #거스름돈 count=0 #출력 결과 array=[500,100,50,10] #거스름돈의 종류 for coin in array: count+=n//coin #동전의 개수 세기 n%=coin #동전 개수 세서 제외 후 남은 거스름돈 print(count) 가장 대표적인 그리디 알고리즘 유형이다. 반복문을 이용해서 동전의 종류에 따라 기존 거스름돈에 동전의 개수를 세서 값을 적용 후 남은 거스름돈으로 계속해서 다음 동전의 종류를 이용해 계산하는 방식이다. 2)..