Today
Total
Archives
05-08 17:11
관리 메뉴

tony9402

[백준 2448] 별 찍기 - 11 (풀이 3) 본문

알고리즘/Baekjoon Online Judge

[백준 2448] 별 찍기 - 11 (풀이 3)

ssu_gongdoli 2019. 3. 18. 01:56
반응형

문제 : 별 찍기 - 11


이번에는 재귀, memcpy, memset, 배열을 안쓰고 오로지 반복문와 if문(삼항 연산자 포함)으로만 짤 수 있다는 것을 보여주겠다.

좀있다 나올 규칙은 비트 연산 이외에 수학적인 계산으로 발견한 것이 아닌 우연히 발견한 것이다.



먼저, 띄어쓰기의 개수를 파악해보자. 아주 작은 삼각형에서 별이 3개씩 찍히므로 높이는 n / 3이다. 아래 경우에는 n이 24일 때를 보는 것이므로 높이는 24 / 3인 8이 된다. 높이가 1일땐 띄어쓰기의 개수는 n - h(h는 높이)이다.




그 다음은 작은 삼각형이 찍히는 부분과 그 사이에서 띄어쓰기를 하는 규칙을 찾아야한다. 이를 찾으려고 하기엔 너무 어렵긴 하다.




2차원 표에서 0부터 8까지의 각각 & (AND) 연산 한 결과를 표에다가 작성한 결과이다.




여기서 신기한 규칙을 발견했는데 보기 쉽게 0이면 초록색으로 0이외의 값은 빨간색으로 칠해보았다.




파란색으로 둘러싼 부분을 잘 보면 어디서 많이 본 듯한 모양이였다. 이를 제대로 비교해보기 위해 오른쪽으로 45도 돌려보자.




45도 돌려보면 아래 사진과 같다. 그 모양은 아까 봤던 그 삼각형의 모양이다!!! 앞과 뒤에 뛰어쓰기 개수의 규칙을 알아내기엔 쉬우므로 간격을 잘 맞춰 띄어쓰기를 출력하면 되고 나머지엔 &연산을 이용하여 True면 띄어쓰기를, False면 삼각형을 출력하는 프로그램을 만들면 된다. 





반응형

'알고리즘 > Baekjoon Online Judge' 카테고리의 다른 글

백준 3025 돌 던지기  (0) 2020.09.04
[백준 16939] 2x2x2 큐브  (0) 2020.05.02
[백준 2448] 별찍기 - 11 (분할정복 x)  (0) 2019.03.18
[백준 2448] 별 찍기-11  (3) 2019.03.15
[백준 9657] 돌 게임 3  (0) 2019.01.25
Comments