2869번: 달팽이는 올라가고 싶다 (acmicpc.net) 문제 분석 분류 수학 문제설명 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) 출력 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. 소스코드 문제풀이 위 혹은 아래로 움직이는 횟수를 n이라 하고 올라가는 길이를 a, 내려가는 길이를 b, 총..
Koala - 7기/기초 알고리즘 스터디
문제 가위 바위 보는 두 명이서 하는 게임이다. 보통 미리 정해놓은 수 만큼 게임을 하고, 많은 게임을 이긴 사람이 최종 승자가 된다. 가위 바위 보를 한 횟수와 매번 두 명이 무엇을 냈는지가 주어졌을 때, 최종 승자를 출력하는 프로그램을 작성하시오. 바위는 가위를 이긴다. 가위는 보를 이긴다. 보는 바위를 이긴다. 입력 첫째 줄에는 테스트 케이스의 개수 t(0 < t < 1000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 가위 바위 보를 한 횟수 n(0 < n < 100)이 주어진다. 다음 n개의 줄에는 R, P, S가 공백으로 구분되어 주어진다. R, P, S는 순서대로 바위, 보, 가위이고 첫 번째 문자는 Player 1의 선택, 두 번째 문자는 Player 2의 선택이다. 출력 각 테스트 케이..
https://www.acmicpc.net/problem/8393 8393번: 합 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. www.acmicpc.net 문제분석 이 문제는 n을 입력받아 1,2,...n까지의 합을 출력하는 문제이다. 소스 코드 n=int(input()) i=1 total=0 while i
문제 코드 import sys int = sys.stdin.readline n = int(input()) #설탕의 총량 a = aa = n // 5 for i in range(a+1, 0, -1): b = n - (5*aa) #5kg을 빼고 남은 설탕 c = b // 3 #3kg으로 묶은 설탕봉지 수 nn = n - ((5*aa) + (3*c)) if nn == 0: print(aa + c) break else: aa -= 1 if aa == -1: print('-1') break continue 문제풀이 흔히 볼 수 있는 최소 개수 문제이다. 가장 적은 봉지 개수를 구하는 것은 어렵지 않으나, 이 문제의 관건은 남은 설탕이 0으로 떨어지지 않을 경우 -1을 출력하는 부분에 있을 것이다. 나는 5kg으로..
https://www.acmicpc.net/problem/13985 13985번: Equality Print, on a single line, YES if the sum is correct; otherwise, print NO. www.acmicpc.net 문제해석 연산식을 입력했을 때, 그 값이 올바른지 판단하여 Yes/No를 출력해주는 문제이다. 코드 #include #include using namespace std; int main() { char a[10]; cin.getline(a,10); if ((a[0] - '0') + (a[4] - '0') == (a[8] - '0')) cout
문제 https://www.acmicpc.net/problem/11931 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net 문제 N개의 수가 주어졌을 때, 이를 내림차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 내림차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 예제..
문제 링크 https://www.acmicpc.net/problem/2010 2010번: 플러그 첫째 줄에 멀티탭의 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 이어서 둘째 줄부터 N개의 줄에 걸쳐 각 멀티탭이 몇 개의 플러그를 꽂을 수 있도록 되어 있는지를 나타내는 자연수가 주어진다. 이 자연 www.acmicpc.net 문제 선영이의 집에는 콘센트를 꽂을 수 있는 플러그가 하나밖에 없다. 선영이는 많은 컴퓨터를 가지고 있는데, 컴퓨터의 전원 문제는 어떻게 해결하는 것일까? 하나의 플러그가 있고, N개의 멀티탭이 있다. 각 멀티탭은 몇 개의 플러그로 이루어져 있다고 한다. 최대 몇 대의 컴퓨터를 전원에 연결할 수 있을까? 입력 첫째 줄에 멀티탭의 개수 N이 주어진다. (1 ≤ N ≤ 500,0..
https://www.acmicpc.net/problem/14652 14652번: 나는 행복합니다~ 첫째 줄에 관중석의 크기를 나타내는 N, M과 잃어버린 관중석 번호를 나타내는 K가 주어진다. (1 ≤ N, M ≤ 30,000, 0 ≤ K ≤ N×M-1) www.acmicpc.net 소스 코드 문제 풀이 seat이라는 빈 리스트를 만들고, for반복문을 이용하여 N행 M열 리스트를 채웠다. 이 후, K번 자리의 좌표를 찾기 위해 while문과 if문을 이용하였다. 0행부터 K번이 있는 행을 찾고, 그 행에서 K번이 있는 열을 찾아 좌표를 출력하였다.
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 코드 #include #include using namespace std; int main() { int n, sum = 0; cin >> n; while (n > 0) { if ((n % 5) % 3 == 0) { sum += n / 5; n %= 5; sum += n / 3; n %= 3; } else { if (n - 3
1350번: 진짜 공간 (acmicpc.net) 1350번: 진짜 공간 첫째 줄에 파일의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 파일의 크기가 공백을 사이에 두고 하나씩 주어진다. 파일의 크기는 1,000,000,000보다 작거나 같은 음이 아닌 www.acmicpc.net 소스코드 문제풀이 이 문제도 굉장히 쉽게 풀었으나, 틀렸습니다 가 자꾸 나오길래 문제를 다시 꼼꼼히 읽어보니 수의 범위가 꽤 컸다. 한번에 풀지 못한 대부분의 문제들은 자료형의 문제인 경우가 많았기에 이 문제를 기회로 확실히 정리하기로 마음 먹었다. int는 4byte로 수의 범위는 -2,147,483,648 ~ 2,147,483,647 long은 메모리 크기는 8byte로 표현할 수 있는 범위는 -..
15726번: 이칙연산 (acmicpc.net) 15726번: 이칙연산 첫째 줄에 세 개 정수 A, B, C(1 ≤ A, B, C ≤ 1,000,000)가 주어진다. 답은 int범위를 벗어나지 않는다. www.acmicpc.net 소스코드 문제 풀이 문제를 봤을 때 굉장히 쉬워보였는데 (수의 순서가 같고, 곱하기와 나누기를 한번씩 사용하기 때문에 어려울 수 없다) 정답 비율이 낮길래 놀랐다. 당연히 처음에는 int 값을 3개 받고 * /, / * 순으로 계산한 값 2개를 비교해서 출력해보았는데 틀렸습니다 라는 결과가 나왔다. 답은 int 범위를 벗어나지 않는다고 했기 때문에 long을 사용할 필요도 없고 소수점 아래는 버리니까 int형끼리 계산하면 당연히 버려진다고 생각했다. 근데 출력을 정수형으로 하라..