썸네일 [PYTHON] 2161 카드1 https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 문제 풀이 1부터 N까지 리스트로 만든다. 남은 카드가 한 장일 될때까지 아래의 과정을 반복한다. 가장 위에 있는 카드를 제거(pop(0))하고 그 값을 출력한다. 그 다음 가장 위에 있는 카드를 카드 뒷장에 넣는다. 가장 위에 있는 카드인 값(pop(0))을 카드 리스트에 append하여 넣어줌 import sys N = int(sys.stdin.readline().strip()) card_li..
썸네일 [PYTHON] 1453 피시방 알바 - set으로 중복제거/스택 https://www.acmicpc.net/problem/1453 1453번: 피시방 알바 첫째 줄에 손님의 수 N이 주어진다. N은 100보다 작거나 같다. 둘째 줄에 손님이 들어오는 순서대로 각 손님이 앉고 싶어하는 자리가 입력으로 주어진다. www.acmicpc.net solution - 전체 학생 수에 중복된 개수 빼기 import sys N = int(sys.stdin.readline().strip()) numbers = sys.stdin.readline().strip().split() print(len(numbers) - len(set(numbers))) solution - 스택으로 풀기 import sys N = int(sys.stdin.readline().strip()) numbers = ..
썸네일 [PYTHON] 2675 문자열 반복 - 문자열 반복하기 * https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net import sys t = int(sys.stdin.readline().strip()) for _ in range(t): R,str = sys.stdin.readline().strip().split() result = '' # result 기본값 설정/ 한 줄의 문자열이 끝나면 다시 비워주고 그 다음 문자열의 result값을 받는다. for s in str: result += s*int(..
썸네일 [PYTHON] 1316 그룹단어 체커 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net solution import sys N = int(sys.stdin.readline().strip()) # 그룹 단어이면 카운팅을 저장하는 변수 생성 total = 0 for _ in range(N): word = sys.stdin.readline().strip() # 'aaabbca' # 오른쪽 요소의 문자를 추가하기때문에 제일 왼쪽 요소인 첫 번째 요소를 미리 ..
썸네일 [PYTHON] 11047 동전 0 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 풀이 동전을 큰 순서대로 정렬한 후 하나씩 순회한다. K가 0일 될때까지 아래의 과정을 반복한다. K를 나눈 몫은 동전의 개수로 누적해서 더해주고 K를 나눈 몫의 나머지는 다시 K가 되어 반복한다. 반복이 끝나면 동전의 개수를 출력한다. solution import sys N,K = map(int, sys.stdin.readli..
썸네일 [PYTHON] 10828 스택 https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 풀이 빈 배열을 만들어 입력 받으며 하는 실행들을 누적 실행한다. solution - 실패 def push(stack,num): stack.append(num) return stack def pop(stack) : if stack: stack.pop(0) print(stack) else: print(-1) def size(stack): print(len(stack)) def..
썸네일 [PYTHON] 2566 최댓값 https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제풀이 하나씩 순회하면서 최댓값을 찾는다. 처음 최댓값을 0으로 설정하고 최초 최댓값보다 순회한 숫자가 더 크면 순회한 숫자를 최댓값으로 업데이트한다. solution - 실패 import sys matrix = [list(map(int, sys.stdin.readline().strip().split())) for _ in range(9)] max_number = 0 row = 0 column = 0 for i i..
썸네일 [PYTHON] 8958 OX 퀴즈 - 등차 수열 / for https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 문제 풀이 'O이 연속적으로 나올때 1씩 증가하여 누적합을 해줌. solution - 등차수열의 합 import sys t = int(sys.stdin.readline().strip()) for _ in range(t): OX_str = sys.stdin.readline().strip().split('X') sum = 0 for O_list in OX_str: sum += (l..
썸네일 [PYTHON] 1546 평균 https://www.acmicpc.net/problem/1546 1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 문제 풀이 공백으로 구분하여 점수들을 리스트에 저장한다. 점수 중 최댓값을 변수에 저장한다. map을 활용하여 입력 값 리스트에 요소를 하나씩 최댓값으로 나누고 100을 곱한 값을 저장한다. 위 리스트의 합계를 계산하고 과목의 개수 N개로 나눠 평균값을 출력한다. solution import sys t = int(sys.stdin.readline().strip()) Nber_list = li..
썸네일 [PYTHON] 3052 나머지 - 중복을 제거하는 법 set https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 문제 풀이 10개의 수를 리스트에 담는다. 리스트에서 요소 하나씩 순회하면서 42로 나눈 나머지 값을 저장한다. 중복을 제거하고 그 개수를 출력한다. 중복을 제거할땐 set을 활용한다. solution import sys Nber_list = [int(sys.stdin.readline().strip()) for _ in range(10)] # map을 활용하여 Nber_list의 요소 하나씩 42로 나눈 나머지 값을 저장함 remainder_list = list(ma..
썸네일 [PYTHON] 2908 상수 - reverse() https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net 문제 풀이 [::-1]로 문자열을 뒤집고 max()로 최대값을 출력함 solution import sys x,y = sys.stdin.readline().strip().split() print(max(int(x[::-1]),int(y[::-1]))) # x = '734' # y = '893' # int(x[::-1]) # 437 # int(y[::-1]) # 398 삽질 reverse()로 문자열을 뒤집으려고..
썸네일 [PYTHON] 1152 단어의 개수 - split 정리 https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열 www.acmicpc.net 문제 풀이 split()으로 공백을 기준으로 문자열을 나누고(list형태로 반환) 리스트의 길이를 출력함. solution import sys data = sys.stdin.readline().strip().split() # ['The', 'Curious', 'Case', 'of', 'Benjamin', 'Button'] print(len(data)) # 6 새롭게 배운점 알고리즘 문제를 풀..