코딩 36

[백준][C] 10818. 최소, 최대

https://www.acmicpc.net/problem/10818 n개의 정수가 주어질 때, 최댓값과 최솟값을 출력하는 문제입니다. 예제 입력 5 20 10 35 30 7 예제 출력 7 35 해결 방법 n개의 숫자를 저장할 배열을 만들었습니다. 문제에서 주어지는 정수의 개수는 최대 1,000,000개이기에, 배열의 크기는 그보다 1 더 큰 1,000,001로 지정하였습니다. 여러 방법이 있지만, 저는 이 방법을 사용하였습니다. I. 배열의 첫 번째 요소를 최댓값으로 지정한다. II. 두 번째부터 배열의 끝까지 반복문을 수행하면서, 첫 번째 요소보다 더 큰 수가 있다면 그 수를 새로운 최댓값으로 지정한다. [3, 5, 4, 7] 배열이 있다고 가정할 때, 첫 번째 요소인 3을 최댓값으로 지정하고 시작한다..

코딩/백준 2022.10.02

[백준][C] 1110. 더하기 사이클

https://www.acmicpc.net/problem/1110 지금까지의 문제보다 조금 더 복잡한 생각을 필요로 합니다. 문제를 잘 읽어보세요. 해결 방법 몇 번 사이클을 돌았는지 저장할 변수 cnt, 숫자를 입력받을 num, 원래의 숫자를 기억할 origin 변수를 만들었습니다. 백준 페이지의 예시에 나와있는 숫자 26을 예로 들어 설명하자면, 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 26에서 십의자리 숫자를 구해야 합니다. 그러기 위해 26을 10으로 나눈 몪으로 구하였습니다. (아래 코드에서의 변수 a) 26에서 일의자리 숫자를 구하는 것은 2..

코딩/백준 2022.10.02

[백준][C] 10951. A + B - 4

https://www.acmicpc.net/problem/10951 이 문제는 EOF를 이용하는 문제입니다. End Of File의 약자로, 입력의 끝을 알려주는 데에 사용됩니다. 자세한 설명은 아래 링크를 참고하세요. http://www.tcpschool.com/c/c_string_io 윈도우 시스템에서는 Ctrl + Z 키로 EOF를 발생시킬 수 있기 때문에, 입력을 계속 받다가 Ctrl + Z키를 눌러 EOF가 발생되는 때에 코드를 종료시키는 것으로 이해하시면 됩니다. 예제 입력 1 1 2 3 3 4 9 8 5 2 예제 출력 2 5 7 17 7 해결 방법 a, b를 입력받고 a와 b의 값이 EOF가 아닐 때, a + b의 값을 출력시키는 방식으로 코드를 작성하였습니다. #include int mai..

코딩/백준 2022.10.02

[백준][C] 10952. A + B - 5

https://www.acmicpc.net/problem/10952 공백 한 칸을 사이에 두고 a, b가 주어지며 이 두 수가 모두 0인 경우 코드의 실행을 끝내게 됩니다. 예제 입력 1 1 2 3 3 4 9 8 5 2 0 0 예제 출력 2 5 7 17 7 해결 방법 a와 b에 모두 0이 입력되는 경우를 a가 0이면서 a가 b와 같은 경우로 생각하였으며, while (1)로 무한 반복 시키다가 위와 같은 조건에 부합하면 break으로 빠져나오도록 코드를 작성하면 됩니다. 코드 #include int main() { int a, b; while (1){ scanf("%d %d", &a, &b); if (a == b && a == 0) break; else printf("%d\n", a+b); } }

코딩/백준 2022.10.02

[백준][C] 10871. X보다 작은 수

https://www.acmicpc.net/problem/10871 첫째 줄에 n과 x가 주어지며, 둘째 줄에는 정수 n개가 주어집니다. x보다 작은 수를 입력받은 순서대로 공백으로 구분하여 출력하면 됩니다. 예제 입력 10 5 1 10 4 9 2 3 8 5 7 6 예제 출력 1 4 2 3 해결 방법 n과 x 변수를 우선 저장하여 준 다음, 반복문을 이용하여 n번동안 scanf 문을 이용하여 숫자를 받습니다. 숫자를 받을 변수는 p로 하겠습니다. scanf를 이용하여 숫자 n개를 버퍼에 받은 다음 조건(p < x)을 만족하면 정수를 출력하는 방식입니다. 코드 #include int main() { int n, x; int p; scanf("%d %d", &n, &x); for (int i = 0; i <..

코딩/백준 2022.10.02

[백준][C] 25304. 영수증

https://www.acmicpc.net/problem/25304 첫째 줄에는 가격, 두 번째 줄에는 품목 수, 그리고 그 아랫줄부터는 가격과 각 품목의 개수가 입력됩니다. 가격과 3번째 줄부터의 영수증 내용을 참고하여 계산한 가격이 일치하면 Yes, 그렇지 않으면 No를 출력하면 됩니다. 예제 입력 260000 4 20000 5 30000 2 10000 6 5000 8 예제 출력 Yes 해결 방법 첫 번째 줄에 적힌 총 가격을 저장할 변수 sum, 두 번째 줄에 적힌 품목 수를 저장할 변수 cnt, 세 번째부터는 반복문을 이용하여 영수증에 적힌 가격을 더해주어야 합니다. 이 가격의 합을 저장할 변수 bill_sum도 만들어 줍시다. #include int main() { int sum, cnt, bi..

코딩/백준 2022.10.02

[백준][C] 10950. A + B - 3

https://www.acmicpc.net/problem/10950 예제 입력 5 1 1 2 3 3 4 9 8 5 2 예제 출력 2 5 7 17 7 해결 방법 첫번째 줄에 계산 횟수가 입력되는데, 이 횟수를 n이라는 변수에 저장합니다. 그리고 반복문을 이용하여 n번 동안 더하기 연산을 수행해 줍니다. 각 케이스마다 바로 출력하므로 값을 따로 저장할 필요는 없습니다. 코드 #include int main() { int n, a, b; scanf("%d", &n); for (int i = 0; i < n; i++){ scanf("%d %d", &a, &b); printf("%d\n", a + b); /* \n을 꼭 넣어주세요. */ } }

코딩/백준 2022.10.02

[백준][C] 2480. 주사위 세 개

https://www.acmicpc.net/problem/2480 주사위 세 눈의 값이 한 줄에 공백 한 칸을 사이에 두고 주어집니다. 상금은 다음과 같습니다. 같은 눈이 3개인 경우 : 10000 + (같은 눈) * 1000 같은 눈이 2개인 경우 : 1000 + (같은 눈) * 100 모두 다른 경우 : (가장 큰 눈) * 100 예제 입력 3 3 6 예제 출력 1200 해결 방법 주사위의 눈의 값을 각각 a, b, c로 생각했을 때, 3개가 모두 같은 경우 : a와 b가 같고, a와 c가 같은 경우 2개가 같은 경우 : a와 b가 같거나, a와 c가 같거나, b와 c가 같은 경우 모두 다른 경우에서 최댓값을 찾는 방법 : a가 b, c보다 큰 경우 : a가 최댓값 b가 a, c보다 큰 경우 : b가..

코딩/백준 2022.10.02