* 오류 지적, 오타, 내용 개선 댓글은 대환영입니다!
3단계 문제입니다. 3단계에서는 for문을 주로 이용하게 되는데, for문은 앞으로도 계속 이용하게 될 반복문이기 때문에 이 기회에 확실히 이해해 두시는 게 좋습니다. 3단계는 for문을 이용한 기본적인 테크닉을 익히게 됩니다. 물론 테크닉이래봤자 막 머리가 아플 정도로 어려운 그런 건 아니니까 걱정 안 하셔도 될 듯합니다.
for문은 대략 다음과 같은 형태입니다. 그 아래는 용례입니다.
for( 선언 ; 조건 ; 이벤트 ) { 명령어 }
for( int i = 0 ; i < 10 ; i++ ) { System.out.println(i); }
[선언]에서는 for문에서 사용할 정수형 변수 하나를 선언합니다. 대체로 i, j, k, ... 순으로 사용하는 편입니다. 지역 변수이기 때문에 for문을 따로 두 번 사용하시면 둘 다 i라고 선언하셔도 무방합니다. C언어와 Java를 사용하다 보면 이 부분에서 차이점을 느끼실 텐데, Java는 여기에서 변수를 새로 선언할 수 있지만 C에서는 밖에서 변수를 선언을 해 두어야 합니다.
[조건]에서는 for문이 명령어를 실행하기 위한 조건을 설정합니다. boolean형의 자료나 조건문이 들어갑니다. 주로 [선언]의 변수를 이용한 조건을 쓰게 됩니다. while문의 괄호와 같습니다.
[이벤트]에서는 for문이 명령어를 마친 뒤 실행할 명령을 설정합니다. 위의 예시에서는 i++, 즉 i의 값을 1 증가시킨다는 명령을 수행합니다.
위의 예시를 실행시킨다면 0부터 9까지의 숫자가 각 줄마다 출력될 겁니다. 그런데, 또 for문에서 중요한 것이 'for문의 반복이 끝나면 i값이 어떻게 되느냐'인데요, 이게 왜 중요하냐면 정보올림피아드(現 한국코드페어)에서 초반 문제로 상당히 좋아하는 문제 유형 중 하나였기 때문입니다. 위 예시에서 i는 9까지 출력됩니다. 그리고 [이벤트]의 구문이 실행되죠. 즉 마지막 루프에서도 똑같이 [이벤트]의 구문을 실행하기 때문에 i는 10이 됩니다. 그리고 다시 [조건]을 검사하고 조건에 맞지 않으니 반복문을 끝내게 되는 거죠. 순서를 유념하시기 바랍니다. 참고로, if문처럼 안의 명령어가 하나뿐일 때는 for문의 괄호를 생략할 수 있습니다.
만약 for문이 어떻게 작동하는지 이해가 가지 않으신다면, for문의 움직임을 하나하나 직접 해 보는 것도 나쁘지 않습니다. i가 1일 때, i가 2일 때... 재미는 없지만, for문이 어떻게 작동하는 지 이해하기에는 좋습니다.
문제
입력
출력
예제 입력
5
예제 출력
1 2 3 4 5
답안
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 = 1 ; i <= N ; i++) System.out.println(i); } }
풀이
for(int i = 1 ; i <= N ; i++)
System.out.println(i);
i를 출력합니다. i는 1부터 시작해서, N보다 작거나 같을 동안은 계속 i에 1씩 더해 가며 반복하기 때문에, 1,2,3,... 과 같이 출력될 수 있습니다. N보다 클 경우는 출력되지 않으므로 N까지 출력되겠군요.기본적인 for문 문제였습니다. 앞으로 나올 문제들도 이 틀에서 크게 벗어나지 않지만, for문 안에서 i를 이용하는 방식이 다소 차이가 있을 것입니다. 그럼 다음 문제에서 뵙겠습니다. 좋은 하루 되시기 바랍니다!
'예전글 > BOJ 단계별로 풀어보기' 카테고리의 다른 글
[백준][3단계][2742번] 기찍 N (Java) (0) | 2018.11.04 |
---|---|
[백준][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 |