* 오류 지적, 오타, 내용 개선 댓글은 대환영입니다!
오랜만에 뵙습니다. 글을 안 올린 지 꽤 되었네요. 요즘 너무 피곤해서 한동안 푹 쉬고 돌아왔습니다. 이제 다시 포스팅을 할 때입니다. 3단계 첫 번째 문제를 마지막으로 풀어봤던 것 같군요. 이번 문제는 for문을 이용하는 기초를 다져보는 문제입니다.
문제
자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 출력한다.
예제 입력
5
* 예제는 하나만 적겠습니다.
예제 출력
5 4 3 2 1
답안
import java.util.Scanner; class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); for(int i = 0 ; i < N ; i++) System.out.println(N - i); } }
풀이
저번 문제와 크게 다를 바는 없습니다. 하지만 차이점이 딱 하나 있습니다. 제목에서 보시는 것처럼, 거꾸로 출력해야 한다는 것이죠. 그렇다고 그리 어려운 것은 아닙니다. 기존에 사용하던 방법에 한 가지 아이디어만 더하면 되니까요. 다음은 저번 문제 - 순서대로 출력하는 코드 - 에 사용했던 for문과 그 내용입니다.
for(int i = 1 ; i < N ; i++) System.out.println(i);
해당 코드에서는 i를 출력하는데, i가 1에서부터 N-1로 변하니까 결국 차례차례 출력하겠다는 말이 됩니다. i가 1일 때는 1, 2일 때는 2, 뭐 이렇게 말입니다. 그런데 거꾸로 출력하려면, 어딘가를 수정해야 합니다.
두 가지 방법이 있습니다. for문의 [조건]과 [이벤트]를 적절히 수정하여 출력될 i값을 직접 수정하거나, i는 그대로 둔 채 출력하는 값을 다른 값으로 하는 방법입니다.
for문을 수정하면, [조건]은 i>0, [이벤트]는 i--로 수정할 수 있습니다.
출력하는 값만 바꾸기 위해서는 System.out.println(i);의 i를 바꿔야 하는데, N-1로 바꾸는 것으로 해결할 수 있습니다. i가 0이면 출력하는 값은 N, i가 1이면 출력하는 값은 N-1... 과 같은 식이죠. 위 답안에 쓰인 방법이기도 합니다.
두 방법 중에 절대적인 정답은 없습니다. 용도에 따라 두 방법을 적절히 사용하시면 되겠습니다.
다음 문제는 구구단입니다.
다들 화이팅합시다!
'예전글 > BOJ 단계별로 풀어보기' 카테고리의 다른 글
[백준][3단계][2741번] N 찍기 (Java) : for문 (0) | 2018.10.02 |
---|---|
[백준][2단계][2839번] 설탕 배달 (Java) : 동적 계획법, 함정문제(?) (3) | 2018.09.27 |
[백준][2단계][10430번] 나머지 (Java) : 사칙연산(6), 증명 (0) | 2018.09.03 |
[백준][2단계][10869번] 사칙연산 (Java) : 사칙연산(5) (0) | 2018.09.02 |
[백준][2단계][1008번] A/B (Java) : 사칙연산(4), Double (0) | 2018.09.02 |