- Today
- Total
목록Category (318)
개발하는 고라니
3709번: 레이저빔은 어디로 레이저박스라는 게임은 정사각형 모양의 n x n 보드에서 진행한다. (체스판을 상상하면 된다) 레이저박스의 임의의 칸마다 우향우 거울이라는 장치가 설치되어 있고, 마지막으로 레이저 한개가 www.acmicpc.net [DFS] N x N 격자의 밖에서 레이저빔을 쐈을 때 우향우 거울을 통해 반사되어 최종적으로 레이저빔이 도착한 위치를 찾는 문제. 레이저 빔은 이미 지나온 곳도 다시 지날 수 있다. 그렇다고 해서 방문을 했는지 여부를 체크하지 않으면 안된다. 문제에서 주어진 것을 보면 알 수 있듯, 레이저빔이 격자 밖을 빠져나가지 못하면 0 0을 출력하라고 한 것을 보아 방문을 체크하지 않는다면 무한루프에 빠져 Stackoverflow 에러가 발생할 것이다. 그러면 어떻게 방..
2017 카카오 코드 예선 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr [DFS or BFS] 다른 방법도 있겠지만 DFS나 BFS를 사용해 '0'이 아닌 곳을 찾고, 같은 숫자로 연결(상,하,좌,우 인접)된 area 개수를 카운트하고, 각 area의 크기(Size)를 구해 최댓값을 도출하면 된다. 각 영역의 사이즈를 구하는 방법은 특정 정점을 방문할 때 마다 1을 기본값을 가지고 연결된 지역을 돌며 그 개수만큼 더한 값을 반환한다. # Code class Solution { static int[] Y = ..
5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net [Deque, 문자열] 문제는 상당히 직관적이고 길지 않아서 이해하는데 어려움은 없지만, 생각한 것을 구현을 할 수 있느냐에 관한 문제와 시간, 메모리의 효율 그리고 자료구조 덱(Deque)을 알고 있는가에 대한 문제가 있다. 아, 그리고 원소의 값으로 주어지는 것이 한 자릿수가 아님에 절대로 유의하자. 이 점을 간과하여 덱을 쓰지않고 문자열 객체로만 할 수 있을 줄 알았으나, 원소의 값은 1 이상 100 이하이다. 덱이란 간단히 말해, 큐(Queue)가 선입선출(First-in First-out, FIFO)이라면, ..
2019 KAKAO BLIND RECRUITMENT 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr [Map, Queue 및 구현] 카카오다운 문제인 것 같다. 사용자의 고유 ID를 중심으로 사용자의 닉네임을 매칭해야하기 때문에 ID 값에 따른 닉네임을 수시로 변경할 수 있어야한다. 이에 적합한 컬렉션으로 Map이 있다. Map은 를 데이터로 저장하는 자료구조이므로 고유한 Key (ID), 그에 따른 Value(name)을 저장하면 되겠다. 나는 각 Record를 처리하며 그의 결과를 Queue에 저장하였다...
코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr [문자열, Stack] Stack 자료구조를 간단하게 배열로 만들어 사용하였다. 컬렉션에 비해 가볍고 사용법도 어렵지 않으므로 개인적으로 좋다고 생각한다. 주어진 문자열 s를 char[]로 변환하고, 한 문자씩 스택에 넣는다. 단, 넣기 전에 이미 스택에 들어간 맨 위의 문자와 비교를하고, 같다면 push를 하지않고 스택에 있는 것을 하나 빼고(pop), 같지 않다면 push한다. 짝지어 제거하기를 완료할 수 있는지에 관한 조건은 stack의 top..
5884번: 감시 카메라 총 소가 6마리 있고, 소의 위치는 (1,7), (0,0), (1,2), (2,0), (1,4), (3,4) 이다. 감시 카메라를 y=0, x=1, y=4 로 설치하면 모든 소를 감시할 수 있다. www.acmicpc.net [Map 이용] Java의 Map 컬렉션을 사용했다. 문제의 접근법은 간단하며 다음과 같다. 2차원 배열에 소들의 (x, y) 좌표를 저장한다. x좌표 Map과 y좌표 Map을 준비한다. x좌표 Map에 Key로 좌표를, Value로 빈도수를 저장한다. y좌표 Map에도 마찬가지 감시 카메라는 총 3대이므로 3번의 반복문을 수행한다 xMap에서의 가장 많이 위치한 x좌표의 정보를 꺼낸다. yMap에서의 가장 많이 위치한 y좌표의 정부를 꺼낸다. (1), (2..
2020 Kakao Blind Recruitment 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr [문자열] 백준에 길들여지고, 카카오의 효율성 문제에 길들여진 나머지, 문자를 쪼개어 비교하는 것은 생각하지도 않았었다. 이는 간단하지만 시간이 상당히 오래 걸리는 작업이기 때문이다. 그래서 굳이 돌고돌아 조금더 어려운 방법이지만 빠른 방법이 뭐가 있을까 하다가 배열 스택을 생각해냈고, 이를 적용해 풀어보다가 도저히 아닌 거 같아 몇몇 게시글을 찾아보니 문자열을 쪼개 비교하는 것이 아닌가. 그래서 작성한..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cY94Xi/btq4pBcLIpX/4o6bQvr55zgMMy8ppc7d4k/img.png)
16441번: 아기돼지와 늑대 첫 번째 줄에는 격자의 행의 수를 나타내는 N (3 ≤ N ≤ 100) 과 격자의 열의 수를 나타내는 M (3 ≤ M ≤ 100) 이 주어집니다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열 www.acmicpc.net [BFS] 빙판('+')만 주의하면 될 문제인줄 알고 섯불리 제출했다가 오답처리를 당했다. 그 이유는 조금 뒤에서 설명하고 우선 문제의 접근법은, 문제에서 주어진 입력을 받으며 늑대의 위치를 기억한다. 그리고 BFS 함수의 인자로 늑대들의 위치를 준다 늑대들의 위치에서 각자 BFS를 수행하는데, 빙판('+')을 만나면 산('#')이나 초원('.')을 만날 때 까지 쭉 미끄러진다. 이 부분을 구현하는 메서드는 다음과 같다. /* di..