Koala - 9기/기초 알고리즘 스터디

https://www.acmicpc.net/problem/7523 7523번: Gauß 각 테스트 케이스마다 "Scenario #i:"를 출력한 다음, n부터 m까지 모든 정수의 합을 출력한다. 각 테스트 케이스 사이에는 빈 줄을 하나 출력한다. www.acmicpc.net 문제분석 입력으로 작은 정수(a)와 큰 정수(b)가 들어오고, a이상 b이하의 모든 정수의 합을 구하면 된다. 문제풀이 가우스공식?을 쓴다 즉, 숫자가 총 짝수개 있을 경우: (처음수 + 마지막 수) * (숫자의 총개수 의 절반) 숫자가 총 홀수개 있을 경우: (처음수 + 마지막 수) * (숫자의 총개수-1 의 절반) + 가운데 수 하지만 저 공식은 수가 둘 다 0이상의 정수 일 때만 쓸 수 있는 공식이므로 a 와 b가 각각 양수 하..
https://www.acmicpc.net/problem/10798 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 문제 코드 문제 풀이 이차원 리스트를 활용, x축을 기준으로 입력받은 문자를 y축을 기준으로 재배열 한 다음 출력.
코드 풀이 문제에서 입력예제로 숫자가 주어졌지만 각각의 성분을 나눠줘야 하기 때문에 문자열로 입력받는다. 왼쪽, 오른쪽 서로 다른 리스트에 추가해주고 합을 비교한다
https://www.acmicpc.net/problem/7523 7523번: Gauß 각 테스트 케이스마다 "Scenario #i:"를 출력한 다음, n부터 m까지 모든 정수의 합을 출력한다. 각 테스트 케이스 사이에는 빈 줄을 하나 출력한다. www.acmicpc.net 문제 코드 풀이 단순 수학문제이다. 그러나 문제의 조건인 "각 테스트 케이스 사이에는 빈 줄을 하나 출력한다."를 유심히 보지 않으면 출력 형식이 잘못되었다고 하니 줄바꿈을 잘 해줘야 겠다.
문제 코드 arr = [list(input()) for _ in range(5)] l=[] for i in range(5): l.append(len(arr[i])) for i in range(5): if max(l)>l[i]: for j in range(max(l)-l[i]): arr[i].append('&') t='' for i in range(max(l)): for j in range(5): if arr[j][i]!='&': t+=arr[j][i] print(t) 풀이 2차원 리스트를 이용하여 입력받았다. 가장 긴 단어에 맞춰서 덜한단어들은 '&'을 채워줬다. 만약 '&'이 나오면 읽지않고 넘어가고 나머지는 t에 저장한다. 마지막에 t 출력
문제 링크 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 문제 설명 사용자가 입력한 1부터 n까지의 수열이 있다. 스택 내에서 push와 pop으로 넣었다 뺏다 하면서 그 수열과 같게 만들어야 한다. 만약 수열이 안 만들어지면 NO를 출력한다. 코드 #include #include #include #include #include #include using namespace std; int main() { ios_base:..
https://www.acmicpc.net/problem/1718 1718번: 암호 Vigenere cipher이라는 암호화 방법은 암호화하려는 문장 (평문)의 단어와 암호화 키를 숫자로 바꾼 다음, 평문의 단어에 해당하는 숫자에 암호 키에 해당하는 숫자를 더하는 방식이다. 이 방법을 변 www.acmicpc.net 문제 소스코드 문제풀이 암호화 키가 암호 문자보다 짧으면 안되고, 너무 길게 잡지 않기 위해 사칙연산과 ceil()을 이용해 길이를 조절해주었다. a보다 이전이라 z로 돌아가는 경우와 그렇지 않은 경우 두 경우로 나누어 return 해주는 함수를 만들어 주었다 for문에서는 띄어쓰기가 아닌 경우를 구분해주고, 리스트에 추가한 후 joion을 이용해 출력해주었다
문제 https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 소스코드 arr = [] for i in range(9): arr.append(list(map(int, input().split(' ')))) m = 0 idx = 0 for i in range(9): for j in range(9): if m
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net 문제 소스코드 문제풀이 이 문제는 리스트와 pop(),append()를 이용해 풀었다. 문자열을 순회할 때 첫 문자는 무조건 리스트에 넣고, 그 이후는 리스트의 마지막 문자와 비교하여 같으면 pop() 아니면 append() 하여 반복문이 끝났을 때 리스트가 비어있으면 ans+=1 해주었다.
https://www.acmicpc.net/problem/12759 12759번: 틱! 택! 토! 승자가 결정되는 즉시 이긴 플레이어의 번호를 출력한다. 플레이어의 번호는 1 또는 2이다. 무승부라면 0을 출력한다. www.acmicpc.net 문제 소스코드 문제풀이 선공할 번호만 입력을 받기 때문에 후공 변수는 선공 번호 입력에 따라 따로 받아주었다. player가 체크할 때마다 리스트에 추가해주어 리스트를 완성시키고, 매겨변수로 player와 리스트를 받아 승리패턴이 나오면 player 번호를 리턴, 승리패턴이 나오진 않으면 0 리턴을 하는 함수를 만들어주었다. 함수의 리턴값을 flag 변수에 받아 0이 아니라면 flag를 출력하고 res변수에 flag값을 넣고 반복문이 끝난 후, res가 0이라면 ..
2828번: 사과 담기 게임 (acmicpc.net) 2828번: 사과 담기 게임 상근이는 오락실에서 바구니를 옮기는 오래된 게임을 한다. 스크린은 N칸으로 나누어져 있다. 스크린의 아래쪽에는 M칸을 차지하는 바구니가 있다. (M
7795번: 먹을 것인가 먹힐 것인가 심해에는 두 종류의 생명체 A와 B가 존재한다. A는 B를 먹는다. A는 자기보다 크기가 작은 먹이만 먹을 수 있다. 예를 들어, A의 크기가 {8, 1, 7, 3, 1}이고, B의 크기가 {3, 6, 1}인 경우에 A가 B를 먹을 www.acmicpc.net 최종 코드 import sys input = sys.stdin.readline t = int(input()) ans = list() for i in range(t): n, m = map(int, input().split()) a = sorted(list(map(int, input().split())), key= lambda x:-x) b = sorted(list(map(int, input().split())))..
KauKoala
'Koala - 9기/기초 알고리즘 스터디' 카테고리의 글 목록 (4 Page)