목록Algorithm (60)
똥그래미 코딩공장
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 방 번호 문제는 간단한 구현 문제이다. 최근 코딩테스트에서 구현문제의 비율이나 난이도가 높아지는 중이여서 구현문제는 꾸준히 풀어 볼 생각이다. import math num = list(map(int,input())) dup_list = [] for i in range(10): cnt = num.count(i) // 0부터9까지의 숫자들이 각각 몇번씩 들어갔는지 그 횟수를 dup_list에 담아준다 dup_list.append(cnt) print(dup_list) if max(dup_list) i..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이번 괄호 문제는 개인적으로 좀 까다로운 문제였다. 이걸 어떻게 접근해야하지? 생각을 했다가 '(' 와 ')' 의 갯수를 세주면서 조건을 넘어가거나 충족하지 못하면 출력값에 맞게 출력해주어 문제를 해결하였다. 아래의 코드를 보면서 보충 설명을 하겠다 T=int(input()) for _ in range(T): cnt=0 test=input() test2=list(te..
https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수 www.acmicpc.net 이번 문제는 문제의 설명이 길어서 좀 당황했지만 읽어보면 어려운 문제는 아니였다. 단순한 구현,수학 문제여서 쉽게 풀 수 있었다. T=int(input()) for _ in range (T): h,w,n=map(int,input().split()) if h>=n: print(n*100+1) else: a,b = divmod(n,h) if b == 0: print(100*h+a) els..
https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 이 문제는 피보나치 함수의 0이 출력되는 횟수와 1이 출력 되는 횟수를 저장하여 뽑아내야 하는데 이 문제를 공책에 풀어보면서 규칙을 발견했다 0과 1의 출력 횟수가 피보나치 함수의 숫자와 동일하게 증가한다는 것을 알아냈다. 그래서 0과1의 횟수는 피보나치 함수의 정답과 동일한것이다. 그러나 한가지 다른점이 있다면 0의 갯수는 맨 앞에 1로 시작하는 것이다. 그래서 0의 횟수는 피보나치 함수의 수열 맨 앞에 1을 넣어 줘야 한다는 것이다 ex)0의 횟수=1,0,1,1,2,3,5,8...... 1..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 이 문제는 DP(dynamic programmig)의 기초 문제라고 볼 수 있다. DP의 첫 걸음마를 떼는 나에게 좀 까다로운 문제였다. 우선 DP가 뭔지 부터 공부해야 했고 이론을 공부 후 실제 문제에 적용하려고 보니 쉽지 않았다. 그만큼 DP라는 유형이 쉬운 유형의 알고리즘은 아닌걸 알았다. 이 문제는 3kg이 1개일때, 2개일때, 3개일떄, n개일때를 생각하여 3kg의 갯수에 기준을 맞추고 그에 맞게 ..
https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net 이 문제는 어이없는 실수로 인해 며칠을 끌었다....이 문제는 큐,덱 문제로 덱을 써서 풀었다. 풀다가 attributeerror: 'list' object has no attribute 'popleft'이런 오류가 떠서 무엇이 문제인지 찾아봤는데 리스트를 덱에 맞게 바꿔줘야했다. 그래서 d=deque(b) 라는 문장을 넣어 덱을 만들었더니 오류가 해결이 되었다. 이것만 해결하면 밑에 for문..
https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 덱, 큐 문제이다. deque를 사용해서 풀면 된다. 문제는 어렵진 않았지만 자잘한 실수들을 발견하는데 시간이 오래걸려 정답을 맞추는데는 오래 걸렸다. 특히 출력형태를 맞추는거에서 시간이 잡혔고 3번째 수를 제거하는 명령어에서 변수에 맞게 코딩을 했어야 하는데 무지성으로 변수 설정이 아닌 상수 고정으로 풀어버려서 계속 막히다가 다시 처음부터 차근히 코딩을 읽다가 문제를 바로 발견하고 풀어 낼 수 있었다. from collections import deque a,b = map(int..
https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 이번 문제는 굉장히 간단해 보이지만 deque를 이용하여 풀지 않을 시 시간초과가 되는 문제이다. 그러므로 이번문제는 deque를 이용하여 풀어야한다. deque는 양방향 데이터 접근이 가능하여 큐or스택 둘다 사용 할 수 있다. from collections import deque num = int(input()) a = [] for i in range(1,num+1): a.append(i) d..