TIL
day12 TIL
dalooong
2023. 7. 7. 01:02
2023-05-02 화
반복문
반복문은 초기화식, 조건식, 증감식 세 가지로 구성되어 { } 중괄호 영역을 반복해 실행시키는 ‘문’이다. 초기화식, 조건식, 증감식에 따라 i가 변화하고 변화한 i는 { } 중괄호 영역에서 사용된다.
6-1. for문
- 반복횟수를 알고 있을 때 주로 사용
- 주로 배열과 함께 사용
- for문의 작성 형식과 실행흐름
- for문 사용 예시
- /* for (초기화식; 조건식; 증감식) { 코드 } */ for (int i = 0; i < 10; i++) { System.out.println(i); } // 출력결과 : 0 1 2 3 4 5 6 7 8 9
- for문을 while문 처럼 사용 가능(Codeup1620 풀이2 캡션 참조)
6-2. 중첩 for문
for문을 중첩해서 쓰기 때문에 중첩 for문이라고 부른다.
- 사용 예시
- for (int j = 2; j <= 4; j++) { // {반복문} for (int i = 1; i <= 9; i++) { // (반복문) } }
- 첫 반복문에서 변수 i를 이미 쓰고 있기 때문에 감싸지는 {반복문}에서는 j를 사용하고 초기화식, 조건식, 증감식에서 모두 j를 사용한다.
- 중첩 for문 활용 예시 (2 ~ 4단 구구단 출력)
- for (int j = 2; j <= 4; j++) { for (int i = 1; i <= 9; i++) { System.out.printf("%d * %d = %d\\n",j, i, j * i); } }
6-3. while문
- 조건식이 true 일 경우에 반복
- 무한 루프나 특정 조건에 만족할 때 까지 반복하는 경우, 파일 읽고 쓰기에 사용
- while(조건식) → 조건식 안에 boolean이 들어가면 된다. while(1) 불가 →C, C++에서는 가능
- while문의 작성형식과 실행흐름
- while문의 작성형식과 실행흐름while문 작성형식과 실행흐름 이미지
/*
while(조건식){
//수행
}*/
int i = 0
while(i < 10) {
System.out.println(i);
i++;
} // 출력결과 : 0 1 2 3 4 5 6 7 8 9
(추가) do-while문
- while문과 동일하나 무조건 한번 실행 한 뒤, 조건을 검사하여 반복 여부를 결정
- 반드시 한번은 수행해야 하는 경우 사용 (Codeup1620 2번째 풀이)
- 사용자의 입력과 함께 로직이 구성되는 부분에 사용
- do-while문의 작성형식과 실행흐름
/*
do{
//수행
}while(조건식)
*/
int i = 0
do {
System.out.println(i);
i++;
} while(i < 10)
// 출력결과 : 0 1 2 3 4 5 6 7 8 9
BufferedWriter 클래스
- java.io 에 속한 클래스. 출력할 데이터가 버퍼를 거쳐 출력되게 한다.벽돌 100개를 카트에 담아 한번에 옮기는 것 (모아서 출력) > BufferedWriter
- 벽돌 한개를 100번씩 왔다갔다 하면서 옮기는 것 (매번 출력) > System.out.println();
- BufferWriter를 사용하는 경우 CodeUp 1084 문제를 풀 때, System.out.println(); 을 이용해 출력하면 시간이 초과된다.
//1084번을 System.out.println() 으로 출력하는 경우
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n1 =sc.nextInt();
int n2 =sc.nextInt();
int n3 =sc.nextInt();
int cnt = 0;
for(int i=0;i<n1;i++){
for(int j=0;j<n2;j++){
for(int k=0;k<n3;k++){
System.out.printf("%d %d %d\\n",i,j,k);
cnt++;
}
}
}
System.out.println(cnt);
}
}
//1084번을 BufferedWriter를 이용해 출력하는 경우
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int l1 = sc.nextInt();
int l2 = sc.nextInt();
int l3 = sc.nextInt();
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int cnt = l1 * l2 * l3;
for (int i = 0; i < l1; i++) {
for (int j = 0; j < l2; j++) {
String str = "";
for (int k = 0; k < l3; k++) {
str += i +" " + j + " " + k + "\\n";
}
bw.write(str);
bw.flush();
}
}
System.out.println(cnt);
}
}
//선언하기
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//출력할 문자열
String str = "ABC";
//출력 (int , char , String 형 데이터를 버퍼에 출력. 자동개행 기능 없음)
bw.write(str);
//줄바꿈 (개행)
bw.newLine();
//버퍼안에 남은 데이터 모두 출력
bw.flush();
//스트림 닫기. close()전에는 flush() 해야함.
bw.close();