본문 바로가기

반응형

Computer

(114)
코딩테스트 문제 (2) - 유효한 괄호 이 문제는 괄호 "(,),{,},[,]" 로 이루어진 string이 입력으로 들어왔을 때, 괄호의 여는 곳과 닫는 곳이 문맥 상 일치하는지 묻는 문제로 대표적인 스택 문제입니다. 테스트 케이스를 한 번 살펴보죠. 문제 1. '{}(){}' => True, 2. '{()}[]' => True, 3. '{{)}[}' => False, 4. '(([]))' => True 풀이 스택 문제라고 언급했는데, 스택을 어떻게 이용해야 할까요? 스택은 마지막 원소가 추출되니 '[', '(', '{' 같이 여는 괄호를 스택에 순서대로 넣어두고 ']', ')', '}' 가 들어오면 스택에서 pop해서 매칭이 되는지 확인하면 될 것 같습니다. 그리고 마지막에 스택에 원소가 남아 있으면, 매칭되는 닫는 괄호가 입력에 없는 것이..
코딩테스트 문제 (1) - 섬의 개수 이 문제는 페이스북이나 기타 IT 기업에서 면접 때 자주 쓰이는 유명한 문제로 여러 변형들이 있으나 그래프 순회 방법 (DFS)로 푸는 방법은 거의 비슷합니다. 먼저 문제를 살펴 보겠습니다. 문제 다음 그림에서 1을 육지로 0을 물로 가정했을 때, 섬의 개수를 구하여라. '1'과 '0'으로 이루어진 중첩 리스트가 입력으로 들어온다고 가정한다. 문제 자체는 위의 그림에서 하얀색 3개의 덩어리를 구하면 되는 문제이고 위 테스트 케이스의 정답은 3이 됩니다. 풀이 먼저 두 번의 for 루프로 입력으로 들어온 중첩리스트를 훑으면서 '1'을 발견했을 때 어떤 액션을 취해야 할 것 같습니다. 동서남북 방향으로 '1'이 연결되어야 섬의 조건을 만족하므로 (i,j) 점에서 (i+1, j), (i-1, j), (i, j..

반응형