입출력 관련 문제를 모두 풀어보았다.
하나정도는 기록해두려고 한다.
String 다루는 문제가 자주 나온다고하여 String 함수를 활용하려고 최대한 노력했다.
예제를 하나 보면,
* * * * * *******
이렇게 출력되도록 코드를 짜는 문제이다.
규칙은 단순하다.
첫번째줄 - 정 중앙에 1개의 *
두 번째~마지막에서 두번째줄- 두개를 출력하나, 그 사이의 간격이 두칸씩 떨어진다.
마지막줄- 2*N -1 개의 * 꽉채워서
문제를 좀 다르게 바라보기로 했다.
이러면 좀 쉬워지나?
이 규칙을 바탕으로 문제풀이 성공.
아 N=1일때는 예외처리를 해주는게 편할듯 하다
import java.util.Scanner; class Main{ public static void main(String[] args){ Scanner scan=new Scanner(System.in); int N=scan.nextInt(); int bs=N; // 왼쪽 별의 자릿수를 위한 변수 -> N으로 초기화 int ls=2; // 오른쪽 별의 자릿수를 위한 변수 String star="*"; String fstar=star; if(N==1) {//Base case System.out.println("*"); return; } System.out.println(String.format("%"+(bs--)+"s", star)); //일단 하나 출력 //왼쪽 별의 자릿수 하나 감소 for(int i=0; i<N-2; i++) { System.out.println(String.format("%"+(bs--)+"s", star)+String.format("%"+(ls)+"s", star)); ls+=2;//오른쪽 별의 자릿수 +2 fstar+="**";//맨 마지막 별 출력을 위해 별 갯수 누적 } System.out.println(fstar+"**");//누적된 별의 수 + ** - } }어려운 문제는 아니지만 실수 안하기 힘든 문제였다.
'이론 > 문제풀이' 카테고리의 다른 글
[백준알고리즘 -1697] 숨바꼭질 - Java(BFS) (0) | 2018.08.26 |
---|---|
[백준 알고리즘 - 6603] 로또 -java(중복된 수가 있는 집합의 순열) +(20180901 백트래킹 코드 추가) (0) | 2018.08.23 |
[Codility] Lesson 6- GenomicRangeQuery (0) | 2018.08.12 |
[Codility] Lesson6- CountDiv (java) (0) | 2018.08.09 |
[KaKao 신입공채 1차 코딩테스트] 비밀 지도(난이도: 하) - java (0) | 2018.08.09 |