본문 바로가기

알고리즘

[문자열 처리] 1152번, 단어 수 세기 /* 주의 사항 (1) 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. (2) 또한 문자열의 앞과 뒤에는 공백이 있을 수도 있다. (3) 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. */ 1. 풀이 (1) 공백을 찾으면 되었던 문제. "apple fine apple"도 결과는 3 "로직 (1) : 단어 3개 사이에는 공백이 2개이므로", 공백 + 1 = 결과값 (2) 문제에서 나올 수 있는 입력 케이스, case1 : 공백 case2 : 공백 + {단어 N} case3 : 공백 + {단어 N} + 공백 case4 : {단어 N} 단어가 3개라서 공백이 2개라는 로직은 case4번만 해결가능. 나머지 case1~3 케이스를 처리하기 위한 예외처리 필요했음...
[자료구조] 비트 마스크 1. 비트마스크 - 직렬화된 단위요소들로 데이터의 특성을 표시한 자료 구조 피자를 예로 들면, 1~20번가지의 토핑가지수가 있을 때 20비트로 표현할 수 있음 (1 -> 토핑 들어감, 0 -> 토핑 X) - 집합을 표현해낼 때 좋은 자료 구조 부분 집합 개념을 실행할 수 가 있어서, 고구마 무스 피자에 들어간 토핑 수가 N가지라고 할 때 2^N에 대하여 비트 연산으로 빠르게 순회가 가능함 2. 무엇을 할 수 있나 - 집한간 비교시, 유의미한 요소를 뽑아낼 수 있을 것 합( | 연산자) = 두 피자에 들어간 토핑은? 교( & 연산자) = 두 피자에 공통적으로 들어간 토핑은? 차( &와 - 연산자 이용) = A 피자에만 특별히 들어간 토핑은? - 집합 내 가능한 조합의 경우의 수를 구하는 문제에서 활용 가능..