나 개발자 진짜 되냐?

백준 C++ 1100번 하얀 칸 ( 체스판 국룰, 행과 열 ) 본문

C++을 시작해봐요!/구현문제를 풀어봤어요!

백준 C++ 1100번 하얀 칸 ( 체스판 국룰, 행과 열 )

Snow Rabbit 2026. 1. 26. 19:05

 

1월 마지막 주

26년 1월 26일..

킄킄 반대로 해도 26년 1월 26일 킄킄

ㅋㅋㅋㅋ

 

주말에는 5일 동안 풀었던 문제를 다시 한번 풀어보는 시간을 가졌다.

한.. 한 시간? 두 시간 좀 안되게 걸렸는데

월요일에 푼 문제는 확실하게 틀렸다..

그래도 뭔가 70 퍼를 맞춘 게? 신기할 따름.

근데 어디가 틀렸는가

하면서 댓글을 봤는데..ㅋㅋㅋ

댓글에 남겨두었던 문제점? 틀린 부분이랑

정확하게 똑같았다....ㅋㅋㅋㅋ

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ흠..

역시 사람은 모르면 같은 곳을 틀린다는 특이한 사실을 또 한 번 느꼈다.


 

 

쉽게 본 문제..

하지만 쉽지 않았다.

왜냐면 흰검흰검흰검흰검

체스판의 경우 이다음에는

검흰검흰검흰검흰 이기 때문..

흠..

 

짝수번째 줄에 짝수번째는 흰색이라는 점을 생각해서 

그냥 때려 박아봤다.

 

 

 

근데 웬걸?! 답이 맞았다!!!

 

아니 한 번에 맞춰도 이제 걱정된다.

내가 현명하게 푼 건가?! 싶고

 

그래서 제씨에게 찾아갔다.

잘 풀었다고 하며 나에게 몇 가지 포인트를 짚어주었다.

 

1. if else에서 for문의 값이 거의 같다.

2. while n--는 나중에 코드 볼 때 이게 몇 번째이지?라고 헷갈린다.

 

그러면서 최고의 힌트이자 국룰? 을 알려주었다.

체스판 문제의 공식

 

좌표가 (r, c) 일 때

하얀 칸 좌표는 r+c 해주면 항상 짝수이다.

두둥 탁..

그럼 그냥 while 쓰지 않고 이중포문 써주면 될 거 같았다.

 

 

더했을 때 짝수면 하얀 칸이니

더했을 때 홀수면 검정칸이다.

나중에 검정칸을 물어보면 식을 그대로 쓰되, %2 == 1 만 고치면 끝!

 

아이디어는 같았다.


 

사실 while문을 쓰려던 이유는 시간복잡도 때문이었다.

근데 나는 

행과 열을 쓰는 기준을

나는 행을 while로 열을 for문으로 썼었던 거고

제씨는 행과 열을 둘 다 for문으로 쓴 거라

결국 뭐.. 시간복잡도는 O(N^2)인 셈..ㅋㅎ

 

 

분명 더 좋은 방법이 있을 텐데..

당장은 구현문제라 신경 안 쓰는 거 같았다.

코테에선 이렇게 쉽게 안 나올 텐데.. 흠흠..ㅎㅋ

걱정이 되긴 하지만!

오늘 내가 힌트를 안 보고 문제 푼 거에 대단쓰 만족한다!

 

고생했다!!