빠에야는 개발중

별 찍기를 하다가 발견한 멋진 풀이 본문

공부/알고리즘 문제

별 찍기를 하다가 발견한 멋진 풀이

빠에야좋아 2018. 2. 10. 20:49

Baekjoon Online Judge 10992번 "별찍기 - 17"

https://www.acmicpc.net/problem/10992




새롭게 시작한 알고리즘 강의에서 추천해준 연습용 별찍기 문제를 풀던 중, 속이 비어있는 삼각형을 출력하는 문제를 만났다.

처음에는 뭔가 간단히 끝낼 수 있을것 같은 느낌이 들어서 이것저것 시도해봤는데, 코드가 조잡해지기만 하고 별다른 진전이 없었다. 그래서 구글링을 해봤는데 이런 풀이를 발견했다.

#include<cstdio>
int n;
int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n + i; j++) printf(i == n - 1 || j == n - 1 - i || j == n - 1 + i ? "*" : " ");
        puts("");
    }
    return 0;
}
//출처:https://codersbrunch.blogspot.kr/2016/12/10992-17.html#comment-form


나는 쉬운 방향으로 풀이 방법을 바꾸자고 생각했던 것이 "먼저 *을 하나 출력하고 그 다음 줄부터 2(n-3)+1개의 공백을 사이에 두고 별 두개를 찍은 후, 마지막에 (라인 수*2)-1개의 별을 출력한다"였는데, 아무리 생각해도 우아하지 못한 풀이 방법이라 가슴 한구석이 답답했었다. 그런데 저 코드를 보고 나니 그 답답함이 시원하게 해소되었다. 코드도 간결하고, 로직도 깔끔하다. 정말 멋진 풀이가 아닐 수 없다. 오늘도 이렇게 한 수 배워간다.

'공부 > 알고리즘 문제' 카테고리의 다른 글

문자열 내림차순으로 배치하기  (0) 2018.02.16
물통  (0) 2018.02.16
날짜 계산  (0) 2018.02.08
다중 조건 정렬  (4) 2018.02.06
스택 두 개로 큐 만들기  (786) 2018.01.27
Comments