항해99_알고리즘 주차 문제와 해결_1
[JAVA]
문제 참고 : https://programmers.co.kr/learn/courses/30/lessons/12969
1번 문제
[직사각형 별찍기]
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
- n과 m은 각각 1000 이하인 자연수입니다.
예시
입력
5 3
출력
*****
*****
*****
내가 해 본 거
1. 먼저 문제분석
- 가로 n
n=1 이면 *
n=2 이면 **
n=3 이면 ***
일 것이다. 그러면 n 받은 거를 반복해서 세로 값을 써주면 될 거 같다는 생각을 했다.
(n=3)
m=1 이면 ***
m=2 이면
***
***
m=3 이면
***
***
***
2. 규칙찾기 & 정리 & 코딩화
- n이 5이면 문자 * 5개 반복 ***** (줄 안바꿈)
- 그 다음 m이 3이면 n을 3번 찍어주면 된다.(줄바꾸기)
- m 세로줄 첫 번째에 n 반복되는 걸 넣어준다.
그 다음 m 세로줄 두 번째도 n 반복되는 거 넣어준다.
[그럴려면 세로줄 반복문 먼저 쓰고 그 안에 가로 줄 반복문 쓰자]
*****
*****
*****
--1. n,m 값 주어지고
--2. m 반복문을 써준다
--3. m 반복문 안에 n 반복문을 써준다.
m반복문 - i가 세로 m 번째까지 안에 가로 n 번이 반복된다.
n반복문 - j가 별을 n번만큼 나오게 반복한다.
int n = 5;
int m = 3;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print("*"); //줄바꿈 안하는 출력 명령어 System.out.print()
}
System.out.println(); //줄바꿈 하는 출력 명령어 System.out.println()
}
※ 자바 출력 명령어 정리 system.out. println, print, printf
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=reeeh&logNo=220347297635
3. JAVA코드 & 결과
public class test {
public static void main(String[] args) {
// write your code here
int n = 5;
int m = 3;
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
*****
*****
*****
※ 이제는 n,m에 사용자가 입력한 값을 받아서 직사각형 별 찍어보자
- 사용자로부터 입력값 받기 : Scanner
<JAVA Code>
import java.util.Scanner;
public class test {
public static void main(String[] args) {
// write your code here
Scanner sc = new Scanner(System.in);
System.out.println("n input");
int n = sc.nextInt();
System.out.println("m input");
int m = sc.nextInt();
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
<결과>
n input
5
m input
3
*****
*****
*****
★ 문제 풀이 들고 온 거
scanner 사용 : 내가 이렇게 하고 싶었는데 다시 보니 System.out.println만 추가 안하면 똑같네?! 근데 출력하는 걸 안 적었어야 통과된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 0; i < b; i++) {
for (int j = 0; j < a; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
'알고리즘 문제풀이' 카테고리의 다른 글
[알고리즘] 없는 숫자 더하기 - 어렵다 (0) | 2022.05.14 |
---|---|
[알고리즘] 문자열을 정수로 바꾸기 (0) | 2022.05.14 |
[알고리즘] 두 정수 사이의 합 (0) | 2022.05.14 |
[알고리즘] 가운데 글자 가져오기 (0) | 2022.05.13 |
[알고리즘] 짝수와 홀수 (0) | 2022.05.13 |