C/백준알고리즘

[C] 백준알고리즘 #2444 #2446 별 찍기 - 7, 9 (다이아몬드, 모래시계)

Sehyeok20 2021. 1. 12. 10:15
반응형

백준알고리즘 #2444 별 찍기 - 7 문제

앞선 별 찍기 5와 6을 합한 문제이다. 단순히 합쳐버리게 되면

  *

 ***

*****

*****

 ***

  *

 

처럼 가운데에 중복되는 줄이 생성될 수 있으므로 조건을 조금 수정해준다.

#2444 정답

4와 6의 정답을 가져와서 이어붙였다.

다만 위와같은 문제가 생기므로 두번째 for문(별 역순으로 찍는 구문)을 조금 수정 했다.

먼저 줄을 나타내는 i의 조건식에서 i <= n 을  한줄 줄이기 위해 i < n 으로 바꾸어준다.

그리고 조건식에서  j < i 에서 j <= i 로 변경했는데 이유는 바로 빈칸을 한칸 찍을 수 있게 하기 위해서이고

j >= i * 2 - 1에서 j >= i * 2 + 1로 변경했는데 이로인해 조건의 범위가 2만큼 줄어들게 된다.

이는 별 갯수를 2n - 1개부터 출력하는 것이 아닌 2n - 3개부터 출력하기 위해서이다.

 

백준알고리즘 #2446 별 찍기 - 9 문제

이어서 별 찍기 - 9 문제이다.

위의 문제의 상하를 뒤바꾼 문제이기 때문에 코드의 위치만 바꾸었다.

오답

단순히 위치만 바꾸고 그대로 실행하면 다음처럼 오답이 나오므로 코드를 조금 수정해준다.

먼저 시작할 때 빈칸을 다시 없애기 위해 j <= i 를 다시 j < i 로 수정해주고 

j <= i  에서 j < i 로 수정

앞에서 별이 2개씩 덜 찍히게 한 것을 다시 원래대로 돌리게 되면 ( j >= i * 2 + 1 을 다시 j >= i * 2 - 1 로 변환)

결과

처럼 잘 나오게 된다. 2444번을 풀면서 바꾸었던 i의 범위는 여기서도 한줄 덜 나와야 하므로 바꾸었던 그대로 두면 된다.

#2446 정답

 

반응형