문제 설명 : 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.
제한조건 :
- n과 m은 각각 1000 이하인 자연수입니다.
import java.util.Scanner;
public class Solution {
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();
}
}
}
직사각형 별 찍기는 초반에 코딩 배우면서 하는 거라 포스팅을 안 하려 했는데
프로그래머스 다른 분들 답안을 보니 IntStream이 있었다.
처음 보는 것이라 찾아보니 Java8에 등장한 것인 듯.. 바로 공부 ㄱㄱ
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()));
}
}
IntStream도 import 해줘야 한다.
for (int i = 1 ; i <= 10 ; i++) {
System.out.println(i);
}
이 코드를
IntStream.range(1, 11).forEach(System.out::println);
이렇게 표현 가능하다.
그래서 상황에 따라 반복문이 필요할 때 사용하면 코드가 깔끔해져서 좋지만
for문과 완전히 똑같지는 않다.
예를 들어 break를 걸 때
public void for_break() {
for (int i = 1 ; i <= 5 ; i++) {
if (i == 3) {
break;
}
System.out.println(i);
}
}
이럴 경우 결과는
1
2
이렇게 나오지만
public void intStream_range_break() {
IntStream.range(1, 6).forEach(i -> {
if (i == 3) {
return;
}
System.out.println(i);
});
}
이렇게 IntSteam으로 한다면 결과는 비슷할 것 같지만
1
2
4
5
결과는 3을 제외한 숫자가 출력된다. 3만 return 했을 뿐 끝까지 흘러가기 때문이다.
필요에 따라 사용하면 될 것 같다.
***추가***
번외로 IntStream.range만 있는 건 아니고 몇 개 더 있는데
IntStream.of(1,2,3,4,5); //1,2,3,4,5에 대한 int스트림 생성, of의 인자는 배열 등도 가능
IntStream.range(1,6); //1,2,3,4,5에 대한 int 스트림 생성
IntSteam.rangeClosed(1,5); //1,2,3,4,5에 대한 int 스트림 생성
***추가***
for문처럼 IntStream의 결과를 내려면
1
2
public void intStream_range_break() {
IntStream.range(1, 6).forEach(i -> {
if (i >= 3) {
return;
}
System.out.println(i);
});
}
이렇게 3 이상에서 return을 시켜주면 결과는 같게 나온다.
완전 같은 식을 만들려면
public void intStream_range_break() {
try {
IntStream.range(1, 6).forEach(i -> {
if (i == 3) {
throw new RuntimeException("stop");
}
System.out.println(i);
});
} catch (RuntimeException e) {
// do nothing
}
}
이렇게 코드를 짜면 된다.
'JAVA' 카테고리의 다른 글
Java - programmers - Level1 홀수와짝수 (0) | 2021.05.18 |
---|