상세 컨텐츠

본문 제목

2018 KAKAO BLIND RECRUITMENT: [1차]비밀지도

Swift알고리즘

by 앱등개발자IOS 2022. 9. 10. 16:07

본문

각 행을 |(or)비트연산을 해주어 합쳐진 지도의 각 행을 나타내는 Int들의 배열 result_num을 구성한다.

이제 각 행을 나타내는 숫자를 2진수로 보고, 1의 위치에는 "#"으로, 0의 위치에는 " "로 대치해줘야한다.

 

간편한 계산을 위해, 각 Int의 맨 뒷자리에서부터 체크하여 임시 String 변수 now_row에 저장하고, reversed()연산 String()으로 형변환하여 최종 result배열에 추가하였다.

체크하고있는 숫자인 now_num이 0이 되면, 그 후로는 모든 칸이 0일 것이고, " "으로 채워주면 된다. 따라서 Stirng(repeating: " ", count: n - j)로 한번에 처리후 break하였다.

 

아이디어의 핵심 포인트는,

1. 맨 뒷자리부터 1 인지 0인지 체크 ( 2로 나눈 나머지로 ), >>연산으로 이미 체크한 비트는 버림

2. >>로 체크한 비트는 버리며, 숫자가 0이 되면, 남은 칸들은 모두 0일 것이므로 " "으로 채우고 break

3. 맨뒤부터 체크했으므로, 각 행을 모두 체크할 때마다 String(s.reversed())으로 제대로 뒤집어진 문자열을 result배열에 추가

관련글 더보기