문제 풀이1. 나열한 내용을 내림차순으로 정렬한다.2. 앞에서부터 n개의 말은 참이다.라는 주장이 n개 있다면 그 것이 참이므로 n을 출력할 수 있다.3. 0개에서 내용이 모순될 수 있음에 주의하며 코드를 작성한다.코드
https://www.acmicpc.net/problem/1159문제 접근1. 총 선수 인원 수 입력 받기2. 총 인원 수만큼 반복하며 딕셔너리 자료구조에 key(이름의 앞글자) value(인원 수)로 저장3. 모든 인원이 저장된 딕셔너리에서 value가 5 이상인 이름(성)들을 리스트 자료구조에 저장4. 리스트 내의 이름(성) 알파벳 순으로 정렬하기5. 상황에 맞는 출력문 출력 문제 코드n = int(input())count = {}starting = []for _ in range(n): a = input() if a[0] not in count.keys(): count[a[0]] = 1 else: count[a[0]] += 1 for key, va..
https://www.acmicpc.net/problem/10823 문제 풀이sys 모듈을 호출합니다.총합을 담을 변수를 tot와 문자열 S를 초기화합니다.while 문으로 EOFError가 발생할 때까지 문자열 S에 입력을 받습니다.이 때 입력받은 S는 ',' 기준으로 구분합니다.','을 제외한 요소를 정수화하여 tot에 더하여 저장합니다. 총합 tot를 출력합니다.1) parse: 문제코드import systot=0S=""while True: try: S+=input() except EOFError: breakS=S.split(',')for i in S: tot+=int(i)print(tot)단, 해당 코드는 IDE 상에선 CTRL + D로 강제종료 해야지만..
1966번: 프린터 큐 (acmicpc.net)t=int(input())for _ in range(t): n,m=map(int,input().split()) #문서의개수n, 0~ 몇번째문서m arr=list(map(int,input().split())) for i in range(n): if (i==m): arr[i] = (arr[i],1) else: arr[i] = (arr[i],0) cnt=1 while (len(arr)!=0): x=arr.pop(0) flag="T" for i in range(n - cnt): if (arr[i][0] > x[0]..
https://www.acmicpc.net/problem/1673문제풀이import sysfor line in sys.stdin: n,k = map(int,line.split()) ans = n while True: if n//k > 0: ans += n//k n = n%k + n//k else: break print(ans)sys 모듈을 이용해 파일 단위 입력으로 한 번에 읽어온 후 그 안에서만 반복하며 EOF를 처리한다.sys.stdin으로 읽어온 입력을 line으로 나누어 한 줄씩 접근한다.line을 map으로 변수 2개에 정수로 나눠준다.쿠폰으로 치킨을 한 마리 시킬 때마다 도장을 1개 받음을..
https://www.acmicpc.net/problem/15657코드#include #include #include #include #include #include using namespace std;vector arr;bool visited[9] = { false, };int ans[9];int n, m;void recursive(int num, int cnt) { if (cnt == m) { for (int i = 0; i > n >> m; for (int i = 0; i > num; arr.push_back(num); } sort(arr.begin(), arr.end()); recursive(0,0); return 0;}알고리즘 분류 : ..
문제 & 링크https://www.acmicpc.net/problem/11880 풀이!! 범위를 고려하여 long long int 자료형을 사용하여야 함!!1. 개미가 이동한 최단 거리는 (세로 + 높이)와 가로를 두 변으로 하는 빗변이기에 가로의 길이가 제일 길어야 한다. * 세로 or 높이가 가장 길 경우 개미가 이동한 경로는 최단 거리가 아니게 되므로 모순이 된다.2. algorithm 헤더 파일의 max 함수를 이용하여 세 값 중 가장 큰 값(가로)을 저장한다.3. if 문을 사용하여 가장 큰 값(가로)이 아닌 두 값(세로, 높이)의 합을 저장한다.4. 2와 3을 이용하여 거리의 제곱을 출력한다. 이슈알고리즘에 문제가 없는데도 시간 초과가 지속적으로 발생했다. 해결코딩테스트에 한정하여 프로그램의..
문제 & 링크https://www.acmicpc.net/problem/8979 풀이1. vector 자료구조를 사용하여 입력받을 각 나라별 금, 은, 동메달의 개수를 저장한다.2. 등수를 알고 싶은 국가와 국가 번호가 같을 때 해당 인덱스를 저장한다.3. for문을 이용하여 등수를 알고 싶은 국가와 그 외 다른 모든 국가를 비교하며 rank 변수를 조정한다.* 자기 자신보다 등수가 높은 국가가 몇 개인지 알면 되기에, 금 -> 은 -> 동 순서로 메달을 비교하며 순위를 떨어뜨린다(변수 값은 상승). 코드#include #include using namespace std;int main() { int N, K; cin >> N >> K; vector G; vector S..
https://www.acmicpc.net/problem/2947문제문제풀이우선 입력받은 숫자들을 리스트에 저장한다. 만약 리스트에 원소들이 [1, 2, 3, 4, 5]가 아닐 경우에는 계속해서 while반복문을 실행하면서 리스트에 원소들이 [1, 2, 3, 4, 5]가 되도록 한다. for반복문을 통해 i번째 원소의 숫자와 i+1번째 원소의 숫자를 비교해서 만약 i번째 원소의 숫자가 크다면 i+1번째 원소의 숫자와 교환한다. 그리고 변경된 리스트를 출력한다.소스코드nList = list(map(int, input().split()))while ' '.join(map(str, nList)) != "1 2 3 4 5": for i in range(len(nList)-1): if nList..
문제 https://www.acmicpc.net/problem/10709 Algorithm해당 위치에 구름이 몇 분 후에 도달하는지 출력하는 문제이다.구름은 오른쪽으로만 이동하고, 구름이 있는 위치는 0으로, 구름이 도달하지 않으면 -1을 출력한다.구름이 오른쪽으로만 이동하기 때문에, 해당 행에서 왼쪽으로 가장 가까운 구름과 자기 자신의 거리를 따져주면 된다. 즉, 반복문을 통해 행을 조사하면서 구름이 등장하면 등장한 위치를 계속 갱신해주어 거리를 계산해주면 된다. 이때, 해당 행에 구름이 없는 경우도 존재하므로 초기값을 -1로 설정하도록 한다.이제, 이를 구현해보면 2중 반복문을 사용하는데, 해당 행의 loop를 처음했을때 least_cloud를 -1로 초기화 해준다. 그리고 또 다른 loop으로 해당..
https://www.acmicpc.net/problem/14719문제2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다.비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까?입력첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500)두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다.따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다.출력2차원 세계에서는 한 칸의 용량은 1이다. 고이는 빗물의 총량을 출력하여라.빗물이 전혀 고이지 않을 경우 0을 출력하여라.예제 입출력풀이전형적인, 그리고 대표적인 투포..
https://www.acmicpc.net/problem/1551코드 설명두번째 줄의 입력이 특이하게, “,”으로 구분되므로, .split() 함수의 인자로 대입.i+1번째의 값이 현재 수열의 마지막 값이 되어야 하므로, 다음 수열의 마지막 index는 size - 1이다.그러나, 진행한 횟수만큼 수열의 크기가 줄어들어서, 다음 반복 시에 차감해야 한다. 그러므로, 마지막 값을 size - 1 - step을 통해 접근한다.리스트 컴프리헨션을 통해 만들어진 다음 수열을 현재 수열을 저장하고 있던 변수에 다시 대입하여, 원하는 횟수만큼 재귀적으로 반복할 수 있도록 한다.출력 형식을 맞춰주기 위해, .join() 함수를 이용한다.코드 내용size, steps = map(int, input().split()) ..