문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한 조건
- n과 m은 각각 1000 이하인 자연수입니다.
Step1. 문제분석
우선 출력대로 만드는 것에는 문제가 없었다.
하지만 입력을 받고 그 값을 만드는 것에 대한 고민이 있었다.
일반적으로 가로5 세로3의 직사각형 별찍기를 하려면
for(int i = 0; i < 3 ; i++){
for(int j = 0; j < 5; j++){
System.out.print('*');
}
System.out.print('\n');
//System.out.println(' '); 으로도 가능
}
이렇게 하면 된다.
하지만 여기서 입력값을 받는대로 값을 바꾸려면 ?
생각보다 간단했다.
정수가 들어간 부분만 입력받은 n,m값이 들어가면 되는 문제였고
Step2. 문제풀이 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
for(int i = 0; i < m ; i++){
for(int j = 0; j < n; j++){
System.out.print('*');
}
System.out.print('\n');
//System.out.println(' '); 으로도 가능
}
}
}
Step3. 다른 사람의 풀이 코드
import java.util.Scanner;
import java.util.stream.IntStream;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
StringBuilder sb = new StringBuilder();
IntStream.range(0, a).forEach(s -> sb.append("*"));
IntStream.range(0, b).forEach(s -> System.out.println(sb.toString()));
}
}
같은 문제를 푸는데 코드가 너무 달라서 다른 문제 혹은 다른 언어인줄 알았다.
아직 stream에 대한 이해도 부족하고 관련해서 잘 이해를 못하겠다,,,
찾아봐도 아직 이해하지 못한 부분이라 조금 더 공부해서 이런 방식으로도 푸는 법을 공부해봐야겠다.
'Java > 알고리즘' 카테고리의 다른 글
[프로그래머스/알고리즘] 가운데 글자 가져오기 (자바/Java) (0) | 2022.11.18 |
---|---|
[프로그래머스/알고리즘] 짝수와 홀수 (자바/Java) (0) | 2022.11.18 |
[백준/알고리즘] 11660 - 구간 합 구하기5 (자바/Java) (0) | 2022.11.12 |
[백준/알고리즘] 11659 - 구간 합 구하기4 (자바/Java) (0) | 2022.11.11 |
[백준/알고리즘] 1001 - A-B 값 구하기 (자바/Java) (0) | 2022.11.08 |
댓글