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=" ") [오답] 문제를 제대로 안읽었다가 만든 코드. 시간초과 걸려서 결국 처음부터 다시했다. 출발한 칸마다 밟는 칸을 계산해서 리스트에 넣고 그 리스트의 길이를 또 저장해뒀다가 한번에 출..
16395번: 파스칼의 삼각형 (acmicpc.net) 16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net 문제코드 n,k=map(int,input().split()) #1~30 arr=[[],[1],[1,1]] for i in range(3,n+1): x=[1]*i for j in range(1,i-1): x[j]=arr[i-1][j-1]+arr[i-1][j] arr.append(x) print(arr[n][k-1]) 코드해설 다이나믹프로그래밍 이용 문제. 작은 문제로 쪼개어... 각 항마다 위의 두..
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를 출력한다.
문제 https://www.acmicpc.net/problem/1350 1350번: 진짜 공간 첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 www.acmicpc.net 문제 풀이 1. 파일의 갯수 N과 파일의 크기, 클러스터의 크기를 입력받는다. 2. 파일의 크기를 클러스터의 크기로 나눌 때, 0으로 나누어 떨어지는지를 기준으로 구분. 0으로 나누어 떨어지지 않을 때는 1을 더해준다. 3. 파일의 크기가 클러스터의 크기보다 크지 않을때는 +1을 더해준다. Code N = int(input()) file = list(map(int, input(..

문제 풀이 두 수열의 부분 수열 중 가장 긴 공통 부분 수열을 찾는 문제이다. 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/1264 1264번: 모음의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 영어 대소문자, ',', '.', '!', '?', 공백으로 이루어진 문장이 주어진다. 각 줄은 최대 255글자로 이루어져 있다. 입력의 끝에는 한 줄 www.acmicpc.net 소스코드 vowel=['a','e','i','o','u'] while True: sen=input() if sen == '#': break vowel_count=0 sen=sen.lower() for char in sen: if char in vowel: vowel_count += 1 print(vowel_count) 문제풀이 1. 모음을 리스트로 정의한다. 2. 무한 ..