Koala - 12기

https://www.acmicpc.net/problem/1551 1551번: 수열의 변화 첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 정수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 수열을 이루 www.acmicpc.net 문제 코드 n, k = map(int, input().split()) a = list(map(int, input().split(','))) for i in range(k): for j in range(len(a)-1): a.append(a[1]-a[0]) a.pop(0) a.pop(0) print(','.join(map(str, a))) 문제풀이 1. 수열의 크기 N과 반복할 횟수 K..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 알고리즘 분류 다이나믹 프로그래밍 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 풀이 n의 크기가 그다..
https://www.acmicpc.net/problem/25706 문제 코드 #include #include using namespace std; int main() { int N = 0; cin >> N; vector v1; vector ans(N); int num = 0; for (int i = 0; i > num; v1.push_back(num); } for (int i = N-1; i >=0; i--) { if (i == N - 1) { ans[i] = 1; } else { if (v1[i] == 0) { ans[i] = ans[i + 1] + 1; } else { if (i + v1[i] + 1 >= N) { ans[i] = 1; } else { ans[i] = ans[i + v1[i] + 1..
N = int(input()) import sys jlist=list(map(int, sys.stdin.readline().split())) step=[] sum=[] num=0 for i in range (N) : for j in range (i,N) : if j>i : num=num+jlist[num-1]+1 else : num=num+j+1 if num>N : break step.append(num) sum.append(len(step)) step=[] num=0 for k in sum : print(k,end=" ") [오답] 문제를 제대로 안읽었다가 만든 코드. 시간초과 걸려서 결국 처음부터 다시했다. 출발한 칸마다 밟는 칸을 계산해서 리스트에 넣고 그 리스트의 길이를 또 저장해뒀다가 한번에 출..
N=int(input()) skill=list(str(input())) num=0 used_list=[] for i in skill : if (i=='L' or i=='S') : used_list.append(i) elif (i=='K') : if 'S' in used_list : used_list.remove('S') num=num+1 else : break elif (i=='R') : if 'L' in used_list : used_list.remove('L') num=num+1 else : break else : num=num+1 print(num) 풀이 사전기술일때는 리스트에 저장, 연계기술일때 리스트에 저장되어있다면 1점, 저장되어있지 않다면 정지 일반 기술일때는 1점을 더한다. 코딩 시작한지 ..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. 출력 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 예제 입력 1 2 예제 출력 1 1 예제 입력 2 10 예제 출력 2 3 힌..
https://www.acmicpc.net/problem/11365 11365번: !밀비 급일 당신은 길을 가다가 이상한 쪽지를 발견했다. 그 쪽지에는 암호가 적혀 있었는데, 똑똑한 당신은 암호가 뒤집으면 해독된다는 것을 발견했다. 이 암호를 해독하는 프로그램을 작성하시오. www.acmicpc.net while True : password = input() if password == "END" : break else : password = password[::-1] print(password) 1. password에 end를 받으면 종료를 하는 while문을 작성한다. 2. password를 뒤부터 읽어내기를 하여 다시 저장을 한다. 3. print를 이용하여 해독된 password를 출력한다.
문제 풀이 두 수열의 부분 수열 중 가장 긴 공통 부분 수열을 찾는 문제이다. 2차원 배열의 행과 열을 각각의 수열로 생각하고 배열을 읽어 나간다. 문자열1[i]와 문자열2[j]가 같다면 i와 j 모두 증가시키고, LCS의 길이를 1 증가 시킨다. 다르다면 지금까지 가장 큰 LCS의 길이를 가져온다. 배열의 인덱스를 벗어나는걸 방지하려고 i와 j를 1부터 시작했고, 그래서 A[i] == B[j]가 아닌 A[i - 1] == B[j -1]이라고 작성하였다. 코드 #include #include #include #include #include using namespace std; string A, B; int arr[1001][1001]; int main() { cin >> A >> B; for (int i..
https://www.acmicpc.net/problem/17094 문제 2와 e는 발음이 비슷해, 둘을 섞어서 말하면 듣는 사람을 짜증나게 만들 수 있다. 지민이는 이 점을 이용해 은수를 미치게 하고 있다. 은수를 위해 지민이가 말한 문자열 s가 주어질때, 2의 등장 횟수가 더 많은지, e의 등장 횟수가 더 많은지 도와주자. 입력 첫 줄에 문자열 s의 길이가 주어진다. 둘째 줄에 문자열 s가 주어진다. s의 길이는 1 이상 105 이하이며, s는 2와 e로만 이루어져 있다. 출력 2의 등장횟수가 더 많다면 2를 출력하고, e의 등장횟수가 더 많다면 e를 출력한다. 등장횟수가 같다면 "yee"를 출력한다. (큰 따옴표 제외) 소스코드 str_len = int(input()) s = input() cnt_..
https://www.acmicpc.net/problem/15657 15657번: N과 M (8) N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 www.acmicpc.net 문제 문제 해석 처음에는 순열을 이용하여 해결하면 된다 생각했지만 자기 자신과 같은 조합을 허용하여 나타내야 하기 때문에 백트래킹을 사용하여 해결해야한다. 코드 def go(start): if len(tmp) == m: print(*tmp) return for i in range(start, n): tmp.append(Str[i]) go(i) tmp.pop() n, m = map(int,..
https://www.acmicpc.net/problem/11022 11022번: A+B - 8 각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다. www.acmicpc.net 소스코드 풀이 1. 테스트 케이스의 개수 t를 입력받는다. 2. for 반복문을 사용하여 t번 동안 a와 b를 입력받는다. 3. %d(문자열 포맷 코드)를 사용하여 출력한다.
문제 https://www.acmicpc.net/problem/15726 15726번: 이칙연산 첫째 줄에 세 개 정수 A, B, C(1 ≤ A, B, C ≤ 1,000,000)가 주어진다. 답은 int범위를 벗어나지 않는다. www.acmicpc.net 소스코드 a, b, c = map(int, input().split()) md = int(a*b/c) dm = int(a/b*c) print(max(md, dm)) 문제풀이 1. 세 개 정수 a, b, c 를 입력받는다. 2. 곱셈을 먼저하고 나눗셈을 나중에 하여 나온 값을 변수1(md)에 저장한다. 3. 나눗셈을 먼저하고 곱셈을 나중에 하여 나온 값을 변수2(dm)에 저장한다. 4. max명령어를 이용하여 더 큰 값을 출력한다.
KauKoala
'Koala - 12기' 카테고리의 글 목록 (6 Page)