https://programmers.co.kr/learn/courses/30/lessons/12969
//테스트코드
//어떻게 짜지...? 이제까지는 출력이 하나하나씩이었는데 한번에 여러개 출력하는건 처음인데...
// 프로덕션코드
import java.util.Scanner;
public class Quiz1_rectangularStarPrinting {
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++) {
oneStarRow(n);
nextLine();
}
}
private static void nextLine() {
System.out.println();
}
public static void oneStarRow(int n) {
for(int j=0; j<n; j++) {
System.out.print("*");
}
}
}
//가장 안쪽 뭉탱이 부터 확인해보자!
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
class Quiz1_rectangularStarPrintingTest {
Quiz1_rectangularStarPrinting q;
@BeforeEach
void setUp() throws Exception {
q= new Quiz1_rectangularStarPrinting();
}
@Test
void testOneRow() {
assertEquals("*****",q.oneStarRow(5)); //오류, oneStarRow의 리턴값이 없어서 테스트 불가
}
}
// 아.. 이것도 출력이 하나씩 여러번 되는 거니까 이렇게 확인할 수 없겠다.
// 대신 프로덕션 코드를 "*"*n 으로 한번에 출력할 수 있으니까 바꾸고 만족해야겠다.
// String * int 라 안되네...? (python에서만 된다.)
// "*".repeat(n) 을 사용하자.
// 문제가 테스트 코드로 확인하기 힘드네...
// 프로덕션코드 리팩토링이나 하고 마무리하자.
//프로덕션 코드
import java.util.Scanner;
public class Quiz1_rectangularStarPrinting {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
drawRectangularStar(n, m);
}
private static void drawRectangularStar(int n, int m) {
for(int i=0; i<m; i++) {
oneStarRow(n);
nextLine();
}
}
private static void nextLine() {
System.out.println();
}
public static void oneStarRow(int n) {
System.out.printf("*".repeat(n));
}
}
// 굿!
'코딩테스트연습 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - JAVA] 로또의 최고 순위와 최저 순위 (0) | 2021.11.24 |
---|---|
[프로그래머스 - JAVA] 소수 찾기 (0) | 2021.11.23 |
[프로그래머스 - JAVA] x만큼 간격이 있는 n개의 숫자 (0) | 2021.11.21 |
[프로그래머스 - JAVA] 행렬의 덧셈 (0) | 2021.11.20 |
[프로그래머스 - JAVA] 핸드폰 번호 가리기 (0) | 2021.11.19 |