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

일단 처음에는 내가 목표하는 수열을 input으로 다 받은 다음에 그걸 endList로 받았고, startList를 [1,2,3,...8]로 받아서 비교하는 형식의 코드를 짰는데 이렇게 할 시 상관은 없으나 시간초과가 계속 난다. ex> ''' start = / / / 4 5 6 7 8 end = / / 6 8 7 5 2 1 List= 1 2 ''' 그래서 스택 하나에 입력하는 수를 꾸준히 넣고, 넣는 도중 top이 입력한 수와 맞으면 pop하도록 하는 형식의 코드를 짜야 한다. 일단 입력을 받은 수는 목표로 하는 수이다. 그 목표보다 stack[-1]이 작으면 stack에 계속 append해주고, 크면 계속 pop해준다. (코드 짤 때 가장 헷갈릴 수 있는 것이, 목표한 것이 바로 나와버릴 때는 그냥 ..
https://www.acmicpc.net/problem/1371 1371번: 가장 많은 글자 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나 이 www.acmicpc.net 문제 분석 영어권에서는 어떤 글자가 다른 글자보다 많이 쓰인다. 예를 들어, 긴 글에서 약 12.31%를 차지하는 글자는 e이다. 어떤 글이 주어졌을 때, 가장 많이 나온 글자를 출력하라. 입력으로는 첫째 줄부터 글의 문장이 주어진다. 글은 최대 50개의 줄로 이루어져 있고, 각 줄은 최대 50개의 글자로 이루어져 있다. 각 줄에는 공백과 알파벳 소문자만 있다. 문장에 알파벳은 적어도 하나..
문제 https://www.acmicpc.net/problem/5363 풀이 join 과 indexing 을 활용하여 깔끔하게 한줄로 리스트를 문자열로 구성했다. 먼저 문장의 개수를 입력받고 문장을 받을 때마다 split 하여 단어단위로 저장했다. 이를 join 을 사용해서 뒤의 “두번째 단어 부터 마지막 단어까지”, “앞에서 두개의 단어” 로 각각의 문자열로 바꿔준 뒤에 합쳐서 출력했다. 코드 count = int(input()) words = [] for i in range(count) : word = input().split() words.append(word) for i in range(count) : print(" ".join(words[i][2:len(words[i])]) +" "+ " ".j..
https://www.acmicpc.net/problem/2511 2511번: 카드놀이 첫 번째 줄에는 게임이 끝난 후, A와 B가 받은 총 승점을 순서대로 빈칸을 사이에 두고 출력한다. 두 번째 줄에는 이긴 사람이 A인지 B인지 결정해서, 이긴 사람을 문자 A 또는 B로 출력한다. 만약 www.acmicpc.net 문제분석 첫 번째 줄에 A가 낼 카드 10장, 두 번재 줄에 B가 낼 카드 10장을 입력한다. 10라운드에 걸쳐 수를 비교하여 이기는 쪽이 +3점, 비기면 둘 다 +1점을 얻는다. 점수가 높은 쪽이 승, 동점일 경우 가장 마지막에 이긴 사람이 승리하는 것으로 한다. 10라운드 전부 비겼을 경우에만 비긴것으로 한다. 코드 a = list(map(int, input().split())) b = ..
https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제분석 첫째 줄에 N을 입력 받는다. 여기서 N은 이후에 입력받을 숫자들의 개수이다. 다음으로 둘째 줄부터는 N개의 수2를 엔터를 이용해서 입력받는다. 여기서 숫자들은 무작위로 입력을 받는 것이다. 무작위로 입력받은 숫자들을 다시 오름차순으로 정리하는 것이 2750번의 문제 내용이다. 코드 문제풀이 입력받는 input() 코드를 이용하는 것보다 시간이 조금 더 단축하기위해서 stdin.readline()..
https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제분석 첫째 줄에 N을 입력 받는다. 여기서 N은 이후에 입력받을 숫자들의 개수이다. 다음으로 둘째 줄부터는 N개의 수를 엔터를 이용해서 입력받는다. 여기서 숫자들은 무작위로 입력을 받는 것이다. 무작위로 입력받은 숫자들을 다시 내림차순으로 정리하는 것이 2750번의 문제 내용이다. 코드 문제풀이 입력받는 input() 코드를 이용하는 것보다 시간이 조금 더 단축하기위해서 stdin.readline()을..
https://www.acmicpc.net/problem/10867 10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 분석 이 문제는 중복된 정수를 제외하고 오름차순으로 정렬한 결과를 출력하는 간단한 문제이다. 코드 n = int(input()) arr = set(map(int,input().split())) arr = sorted(arr) print(" ".join(map(str,arr))) 문제풀이 이번 스터디를 통해 배우지 않았더라면 리스트를 사용하여 조건문을 활용해 중복된 값은 넣지않는 코드로 구현을 하였겠지만, 이번에 set이라..
문제 0부터 9까지의 숫자가 표시된 카드를 가지고 두 사람 A와 B가 게임을 한다. A와 B에게는 각각 0에서 9까지의 숫자가 하나씩 표시된 10장의 카드뭉치가 주어진다. 두 사람은 카드를 임의의 순서로 섞은 후 숫자가 보이지 않게 일렬로 늘어 놓고 게임을 시작한다. 단, 게임 도중 카드의 순서를 바꿀 수는 없다. A와 B 각각이 늘어놓은 카드를 뒤집어서 표시된 숫자를 확인하는 것을 한 라운드라고 한다. 게임은 첫 번째 놓인 카드부터 시작하여 순서대로 10번의 라운드로 진행된다. 각 라운드에서는 공개된 숫자가 더 큰 사람이 승자가 된다. 승자에게는 승점 3점이 주어지고 패자에게는 승점이 주어지지 않는다. 만약 공개된 두 숫자가 같아서 비기게 되면, A, B 모두에게 승점 1점이 주어진다. 10번의 라운드..
https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 문제분석 먼저 정수 입력이 주어진다. 입력된 정수에 따라 loop 문을 돌면서 빈 리스트에 append를 하거나 pop을 하고 마지막에 리스트의 총합을 출력하면 되는 문제이다. 문제에서는 0을 입력받을 경우 pop을 하고 0 이외의 정수일 경우 해당 정수를 리스트 안에 집어넣도록 하였다. 코드 from sys import stdin A = [] N = int(st..
https://www.acmicpc.net/problem/19946 19946번: 2의 제곱수 계산하기 263 = 9,223,372,036,854,775,808 까지는 계산을 잘 하다가 264를 264-1인 18,446,744,073,709,551,615로 계산을 잘못해버렸다. www.acmicpc.net 문제에서 2의 제곱을 곱하다가 실수로 1을 빼버리는 순간이 단 한 번 존재한다고 하고, 실수할 때가 언제인지 구하라고 합니다. 풀이는 두 가지가 존재합니다. 첫 번째 풀이 첫 번째는 2의 제곱은 계속 짝수만 나오는데, 1을 빼버리면 그때 한 번 홀수인 값이 존재한다는 것을 이용하는 풀이입니다. 이 경우에는 홀수인지 짝수인지 확인하면서 짝수면 2로 계속 나누면 되지만, 홀수가 나오는 순간부터는 1을 더해..
https://www.acmicpc.net/problem/11944 11944번: NN 첫 번째 줄에는 N, M이 주어진다. (1 ≤ N, M ≤ 2016) www.acmicpc.net 문제 코드 #include using namespace std; #include #define PI 3.141592653589793 #define ll long long string str; int main() { ios::sync_with_stdio(0); cin.tie(0); string n; int m; cin >> n >> m; int len = n.length(); int num = stoi(n); if (len*num
https://www.acmicpc.net/problem/8958 문제 내 코드 'O'가 연속해서 나올 경우 추가되는 점수가 점점커진다. sum1에 eve를 더해주는 구조로 하고 'O'가 나오다가 끊겼을때 eve를 다시 1로 초기화한다. 입력받은문자열의 길이만큼 반복해준뒤 sum1을 출력한다. 문제풀이
KauKoala
'Koala - 5기/기초 알고리즘 스터디' 카테고리의 글 목록 (5 Page)