블로그

뉴스 클러스터링 소재 정리 (kakao 2018)

게시 1분

코딩테스트 연습 - [1차] 뉴스 클러스터링

구현 문제지만, 어떻게 푸느냐에 따라 풀이 길이가 아주 짧아지는 배울 소재가 많은 문제

  1. 영문자 to 인덱스 비트연산

영문자의 대소와 관계없이 항상 다음이 성립한다.
'A' & 31 = 1, 'a' & 31 = 1
'B' & 31 = 2, 'b' & 31 = 2
~
'Z' & 31 = 26, 'Z' & 31 = 26

'A'와 'a'의 비트가 다음과 같은 이유로 성립하게 된다.
'A' = 1000001, 'a' = 1100001
31의 비트값은 11111 이므로, 마지막부터 5자리의 비트를 제외한 나머지를 무시해 버리겠다는 의미다.
무시해버리면 비트값은 1부터 시작하게 된다.

  1. 일차원 인덱스화

a[3][2][4] 라는 3차원 배열이 있다고하자.
각각에 들어가는 인덱스를 idx1, idx2, idx3라고 할때,
idx1 + idx22 + idx34 로 계산해서 인덱스를 넣는다면
a 배열을 a[3+4+16] = a[23] 으로 줄일 수 있다.

해당 문제에서는 "AB"라는 문자열을 각각의 character 마다 인덱스를 정해서
배열에 값을 넣고 싶지만, 이를 'A' + 'B' * 26 과 같은 과정으로 일차원배열에 저장할 수 있다.

댓글

댓글을 남기면 닉네임(또는 GitHub 계정 정보)이 저장됩니다. 개인정보처리방침

GitHub