전체 글

항공대 알고리즘 동아리 Koala 🥰
https://www.acmicpc.net/problem/9325 9325번: 얼마? 해빈이는 학교를 다니면서 틈틈히 번 돈으로 자동차를 사려고 한다. 자동차에 여러 가지 옵션을 포함시킬 수 있는데 해빈이는 덧셈과 곱셈을 하지 못하기 때문에 친구 태완이에게 도움을 청했 www.acmicpc.net 소스코드 문제풀이 a로 테스트 케이스의 수를 입력받고 테스트 케이스 수 만큼 반복한다. s, n에 각각 자동차의 가격과 옵션의 개수를 입력받고, total 변수를 생성하여 s값을 저장한다. n만큼 반복하며 p, q를 split()을 이용하여 띄어쓰기 단위로 입력받고 total에 p*q만큼 더한 후 total 값을 출력한다.
문제 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 예제 입력 1 복사 2 1 5 예제 출력 1 복사 4 예제 입력 2 복사 5 1 6 예제 출력 2 복사 2 예제 입력 3 복사 100 99 1000000000 예제 출력 3 복사 99999990..
문제풀이 두개의 값을 입력받고 2 두개에 적용되는 조건을 넣어주면 된다. 일단 첫번째로 대입되는 수를 a, 그 다음 대입되는 수를 b로 두고 그 2개를 같은 경우와 같지 않은 경우로 나누고 그 안에서 같지 않은 경우에서 문제에 제시된 조건을 써 주고 만약 둘다 아닌경우는 else를 이용해 neither를 출력하면 된다. 그리고 같은 조건이 출력된 경우 break 구문을 이용해 끝내주면 된다. 소스코드 #include int main() { int a, b; while (1) { scanf("%d %d", &a, &b); if (a!=b){ if (b%a == 0) printf("factor\n"); else if (a%b == 0) printf("multiple\n"); else printf("neith..
문제분석 분류 구현 문제설명 입력출력 소스코드
문제 코드 n = int(input()) for i in range(n): s = str(input()) print(s[0].upper()+s[1:]) 문제풀이 -하나의 문자열에서 어떻게 첫글자 하나만을 대문자로 고치는가에 대해 어려움이 있었다. 문제 해결방법은 생각보다 단순했다. 문자열을 하나의 배열로 보고 첫 글자를 [0]으로 쓰면 된다는 것! - 대문자 소문자로 고치는 방법은 파이썬에 내장되어 있는 코드를 사용하면 된다 소문자-> 대문자 : .upper() 대문자-> 소문자 : .lower()
11055번: 가장 큰 증가 부분 수열 (acmicpc.net) 11055번: 가장 큰 증가 부분 수열 수열 A가 주어졌을 때, 그 수열의 증가 부분 수열 중에서 합이 가장 큰 것을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {1, 100, 2, 50, 60, 3, 5, 6, 7, 8} 인 경우에 합이 가장 큰 증가 부분 수 www.acmicpc.net 문제 해석 수열 A의 부분수열 중 제일 합이 큰 부분수열의 합을 구한다. 코드 문제 풀이 예제로 나온 "가장 긴 증가하는 부분 수열"과 비슷한 문제이다. n과 a에 input 값들을 넣어주고 누적합을 구하기 위한 list b를 선언해주었다. 그리고 b는 최소 자기자신을 더한 값이 나오므로 a의 값을 그대로 b로 옮겨주었다. n이 최대 1000..
코드 t = int(input()) for i in range(t): a = input() print('{0}{1}'.format(a[0],a[-1])) 문제풀이 문제풀이 자체에는 어려움이 없었지만 한가지 문제점이 있었다. 아래는 내가 처음 작성했던 코드이다. import sys input = sys.stdin.readline t = int(input()) for i in range(t): a = input() print('{0}{1}'.format(a[0],a[-2])) sys.stdin.readline을 이용한 입력에서는 \n까지 포함되어 입력되므로 인덱스에서 -1이 아닌 -2를 찾는 방식으로 맞춰주었다. 하지만 이 정답은 결과가 맞게 나왔음에도 오답처리되었고 결국 모듈을 빼고 작성한 코드(상단의 정..
https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 풀이 맨처음에는 각 짝을 찾는 탐색형식으로 문제를 풀려고 했는데, 그렇게 하면 너무 번거롭게 됨을 깨닫고 방법을 찾다가 간편한 방식을 찾았다. 바로 '()'를 찾아 이를 문자열에서 제거하는 것이다. 그렇게 계속해서 제거하다보면 결국 짝이 맞는 문자열만이 공백이 되고, 안맞는 문자열은 한쪽 괄호만이 남게 된다. C++로 풀어보려 했지만, 파이썬에 구현되어 있는 아..
https://www.acmicpc.net/problem/14910 14910번: 오르막 첫째 줄에 공백으로 구분된 N(1 ≤ N ≤ 1,000,000)개의 정수가 주어진다. 입력으로 주어지는 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 소스 코드 문제 풀이 입력된 정수들의 나열과 그것을 copy()를 통해 복사한 후, sorted()로 인해 오름차순으로 정렬된 정수들의 나열을 비교하여 같으면 "Good" , 다르면 "Bad" 를 출력하게 하였다.
https://www.acmicpc.net/problem/16395 16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net 문제분석 분류 수학, 다이나믹 프로그래밍, 조합론 문제설명 N번째 행에는 N개의 수가 있다. 첫 번째 행은 1이다. 두 번째 행부터 각 행의 양 끝의 값은 1이고, 나머지 수의 값은 바로 위 행의 인접한 두 수의 합이다. 정수 n과 k가 주어졌을 때, 파스칼의 삼각형에 있는 n번째 행에서 k번째 수를 출력한다. (1 ≤ k ≤ n ≤ 30) 코드 1 n, k = map(int, inp..
https://www.acmicpc.net/problem/7785 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net 문제 설명 출입 카드 시스템에 들어온 사람과 나간 사람의 로그가 저장된다. 출입한 사람의 이름과 출입 여부가 주어질 때, 아직 나가지 않은 사람을 출력하면 되는 문제다. 코드 설명 우선, n으로 총 로그의 수를 입력받는다. n만큼 도는 for문 안에서, 2개의 요소로 이루어진 입력값을 리스트로 변환하여 입력받는다. 사람 이름을 key값으로, 회사 출입 여부를..
https://www.acmicpc.net/problem/3449 3449번: 해밍 거리 입력을 여러 개의 테스트 케이스로 이루어져 있다. 첫째 줄에는 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 두 줄로 이루어져 있다. 각 줄에는 이진수가 하나씩 주어진다. 두 이진 www.acmicpc.net 문제해석 두 이진수가 다를 때 거리를 1씩 증가시킨다. t = int(input()) for i in range(t): cnt = 0 a = input() b = input() for j in range(len(a)): if a[j] != b[j]: cnt += 1 print('Hamming distance is {}.'.format(cnt)) 문제풀이 반복문을 이용해 입력받은 t번의 횟수만큼 반복한..
KauKoala
Koala