일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 자바스크립트
- 연습문제
- JSP/Servlet
- SQL
- 컴퓨터비전
- 딥러닝
- html/css
- rnn
- c언어
- 정보처리기사필기
- 데이터분석
- 디버깅
- 자바
- 자바 실습
- 데이터베이스
- 중학수학
- 순환신경망
- 머신러닝
- CSS
- 컴퓨터구조
- JSP
- 혼공머신
- 자바스크립트심화
- JDBC
- 상속
- ChatGPT
- 개발일기
- 파이썬
- 중학1-1
- 정보처리기사실기
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
반복문 응용 1 : 백준 코딩테스트 A + B의 합을 구하는 케이스 문제 본문
오늘부터는 매일 코딩테스트 문제를 푼 것 중에서 자주 틀리거나 중요한 문제들을 하나의 유형으로 묶어서 학습일지를 써보기로 했다. 코딩테스트는 프로그래머스로 4월 초에 처음으로 풀기 시작했다. 근데 이 문제의 난이도가 너무 어려운 것 같아 코드업으로 풀다가 백준도 괜찮은 것 같아 2가지를 번갈아서 풀고 있다.
이때는 C++로 몇 개의 문제를 풀었으나 대부분의 문제들이 C언어 기준으로 되어 있는 것 같아 5월 초부터 다시 C 언어 책을 펼쳐보며 다시 공부하기 시작했다.
언어는 반복학습인데 매번 비슷한 유형의 문제를 틀린다는 걸 알게 되었다. 오늘은 그중에서 A+B의 합을 구하는 문제를 가져와보았다.
A+B-3 <10950번>
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
5
1 1
2 3
3 4
9 8
5 2
예제 출력 1
2
5
7
17
7
이렇게 기본적인 합을 구할 때도 여러번 반복해서 입력을 받을 때는 반복문을 사용한다.
A+B-7 <11021번>
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.
예제 입력 1
5
1 1
2 3
3 4
9 8
5 2
예제 출력 1
Case #1: 2
Case #2: 5
Case #3: 7
Case #4: 17
Case #5: 7
두번째 문제에서처럼 Case별로 번호를 매겨 출력을 할 수도 있는데 이때 번호는 i를 사용하면 간단하게 구할 수 있다.
내가 어려움을 느꼈던 문제는 다음의 문제들이었다.
A+B-5 <10952번>
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
입력의 마지막에는 0 두 개가 들어온다.
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
1 1
2 3
3 4
9 8
5 2
0 0
예제 출력 1
2
5
7
17
7
이 문제는 A와 B가 0이 입력될 때 반복을 종료하고 값을 출력하지 않아야 한다. 근데 for문과 달리 while문은 참일 때와 거짓일 때의 조건을 먼저 괄호 안에 넣어주어야 한다.
처음에는 while문 안에 if처럼 조건식을 넣어주니 변수를 알 수 없다는 경고 문구가 떴다.
while문에서는 0과 1은 무슨 뜻일까?
0은 거짓, 1은 참이다. 그러니까 1은 참일 때 계속해서 무한루프를 돌겠다는 의미이다.
while문 안에도 괄호에 조건식을 넣을 수 있지만, a != 0 && b != 0을 넣게 되면 계속해서 무한히 0이 되지 않을 때까지 반복이 될 것이다.
그러니까 if문은 따로 떼어서 while문 안쪽에 써주어야 하나보다. 그리고 반복을 빠져나올 때는 break를 사용한다는 걸 잊지 말자!
A+B-4 <10952번>
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)
출력
각 테스트 케이스마다 A+B를 출력한다.
예제 입력 1
1 1
2 3
3 4
9 8
5 2
예제 출력 1
2
5
7
17
7
이 문제는 조금 전의 문제와 달리 그냥 입력을 종료하면 출력도 함께 종료되게 만드는 것이다. 그럴 때는 EOF를 사용한다. 케이스를 종료하고 싶을 때 아마도 enter키를 누르면 종료가 되게끔 만드는 문제인 것 같다.
찾아보니 EOF는 이런 거였다.
EOF = End Of File이며, 파일의 끝을 표현하기 위해 정의해 놓은 상수이다 (-1 값을 가지고 있다).
함수 호출의 실패나, 윈도우에서 ctrl + z , 리눅스에서 ctrl + d를 입력했을 경우 EOF를 반환한다.
학습을 마치고
그 외에도 반복문을 활용한 다양한 문제를 풀어보았다. 이 문제들은 이틀 전에 모두 한번 풀었고, 모르는 건 정답을 찾아보았다. 근데 오늘 다시 풀어보니 막히는 문제들이 여러 개 있었다. 역시 반복 학습이 중요한 것 같다.
처음 이 문제를 만났을 때는 30분을 헤매었는데 지금은 5분 안에 풀 수 있기도 하다. 놀라운 변화인 것 같다. 난 요즘 공부를 못하는 내게 부정적인 말을 하며, 자책과 화를 내고 있었다.
하지만 오늘 공부를 해보니 지난 몇 달간의 공부가 헛되지 않았음을 느꼈다. 비록 별로 하지는 않았어도 매일 조금이라도 프로그래밍 언어와 씨름했던 시간들은 모두 값진 시간이었다.
내일은 별 찍기 문제에 도전해보려고 한다. 별 찍기에는 참 다양한 문제들이 있다. 그 문제들을 정복한다면 반복문은 웬만큼 잘 활용할 수 있다고 본다. 이제 반복문을 어떻게 사용하는지 조금은 알 것 같다~
'알고리즘 및 자료 관리 > 알고리즘 & 코딩테스트' 카테고리의 다른 글
조건문 응용 1 - if~else, switch문을 사용해 조건에 맞는 결과값 출력하기 (0) | 2024.08.24 |
---|---|
반복문 응용 4 - 피라미드 삼각형 별 찍기 (0) | 2024.08.24 |
약수, 배수와 소수 1 <백준 코딩테스트> - 약수와 배수 문제 풀기 (0) | 2024.08.24 |
반복문 응용 3 - 사각형과 평행사변형 별 찍기 (0) | 2024.08.24 |
반복문 응용 2 - 삼각형 별 찍기 (0) | 2024.08.24 |