본문 바로가기
알고리즘/백준

[Java] for문 - 별찍기-1 (2438번)

by 자연송어 2021. 6. 20.

 

for문 흐름도

풀이과정 🤷‍♂️

 

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		
		for(int i = 1; i<=a; i++)
			
			System.out.println("*");
	}
}

 

 

입력값 4

결과값
*
*
*
*

- 이게 되는게 신기해서 충격먹음..

- 세로로 출력은 했으니 가로롤 출력하면 될것 같은데 

- 그렇다면 이중 for문인것인가

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++)
			for(int j = 1; j<=a; j++)
			
			System.out.println("*");
	}
}

 

 

입력값 2
결과값 = 입력값 두배로 별표 출력
*
*
*
*

 

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=3; i++) {
			for(int j = 1; j<=3; j++) {
				System.out.println("*");
			}
			System.out.println();
		}
	}
}

 

 

입력값2
결과값 = 2마다 공백 생성
*
*

*
*

- for문 대괄호의 중요성을 깨달음.

- 계속 가로로 안되서 스트레스 받음.

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a; j++) {
				System.out.print(j+""); //이부분을 print로 바꾸니까 가로로 바뀜
			}
		}
	}
}

 

입력값 3
결과값 = 가로로 3연속 반복
123123123

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a; j++) {
				System.out.print(j+"");
			}
			System.out.println(); //줄바꿈
		}
	}
}

 

 

입력값 3
결과값 = 세로로 3번 반복
123
123
123

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {  //세로 3
			for(int j = 1; j<=a; j++) { //가로 3
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
입력값 3
결과값 = 가로세로 3배수
***
***
***

- 가로부분이 한번에 다 실행이 되서 문제

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a;) {
				System.out.print("*");
			j++; } // j증감식의 자리를 옮겼지만 위와 같은 결과값 출력
			System.out.println();
		}
	}
}

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a;) {
				System.out.print("*");
			break; } // break 추가
			System.out.println();
		}
	}
}

 

입력값4
결과값
*
*
*
*

 

 

한국기술교육대학교 온라인평생교육원 출처

import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		int j;
		int a = my.nextInt();
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(j = 1; j<=a; j++) { //j++ 이부분이 데드코드가 됨.
				System.out.print("*");
				break; } 
			System.out.println();
		}
	}
}

 

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		int a = my.nextInt(); //a 입력값 받는 객체 생성
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a; j++) {
				System.out.print("*");
				if (j>=i)
					break; } 
			System.out.println();
		}
	}
}

 

입력값 4
결과값
**
***
****
****

 

정답🙆‍♂️

package forStatement;
import java.util.Scanner;
public class shootAStar1 {

	public static void main(String[] args) {
		Scanner my = new Scanner(System.in);
		int a = my.nextInt(); //a의 입력값을 받는 객체 생성
		my.close();
		
		for(int i = 1; i<=a; i++) {
			for(int j = 1; j<=a; j++) {  //이중 for문으로 가로세로 별찍기 
				System.out.print("*"); 
				if (j>=i) // 조건문을 통해 별의 수 조정 
					break; } 
			System.out.println();
		}
	}
}

 

입력값 7
결과값
*
**
***
****
*****
******
*******

- 혹시나 싶었는데 정답! 

- 반복문 흐름도를 정확하게 이해하는 것이 도움이 되었다.

 

반복문 흐름에 도움이 되었던 자료들

세세tv의 정보공유 출처
출처 (https://ysoh.tistory.com/category/프로그래밍?page=5)

 

위의 결과값