문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별 (예제 참고)을 출력하시오.
입력
첫째 줄에 N (1<=N<=100)이 주어진다.
출력
첫째 줄부터 N번째 줄 까지 차례대로 별을 출력한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package Code_201608; import java.util.Scanner; public class PrintForStarTwo { @SuppressWarnings("resource") public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan = new Scanner(System.in); //int a = 5; int a = scan.nextInt(); for(int i = 1; i <= a; i++) { //세로 for(int j = 1; j <= a - i; j++) { //가로, 공백을 우선 출력 System.out.print(" "); //줄바꿈이 아니므로 공백을 출력 //System.out.print("@"); } for(int k = i; k > 0; k--) { //가로, 공백 제외한 공간을 * 로 출력 System.out.print("*"); } System.out.println(""); } } }// |
결과를 보면 한 번 틀렸는데 처음 제출할 때 20 라인 주석으로 된 부분을 보면, 테스트를 위해서 @ 표시를 한 상태로 제출을 해서 오답이었다.. ㅎㅎㅎ.. 공백을 표시했어야 되는데 말이지.. ~_~..
우선 이문제는 접근을 어떻게 하느냐가 제일 중요한듯하다.. 좌측이 아닌 우측 정렬을 하려면 좌측에 공백을 줘야된다.. 그러려면 어떻게..?? 핵심적으로는 for 를 두 개를 써야되며, 크게는 세개를 써야된다.. 전체적인 for 하나, 공백 출력 for 하나, 실제 별 출력 for 하나 이렇게 말이다..
무엇보다 공백을 단순히 머리로 생각하지말고, 나처럼 @ 이나 기타 문자를 통해서 화면 좌측부분을 출력한 후 우측을 천천히 고민해보는것이 좋다고 생각한다.. 머리가 좋은 사람은 상관없겠지만, 나 같은 경우에는 눈에 보이지 않는 상태에서 코딩하는게 젤 어렵다.. ㅋㅋㅋ..
단순한 문제임에도 for 이다보니 조건 생각하는 곳에서 시간을 꽤나 잡아먹은 문제다.. 나중에 더 어려운 문제는 어뜨카지.. ㅠㅜ.. 다른 분들은 쉽게 쉽게 잘 해결하시리라 믿으며..
댓글 없음:
댓글 쓰기