- Today
- Total
목록Category (320)
개발하는 고라니
2020 Kakao Blind Recruitment 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr [문자열] 백준에 길들여지고, 카카오의 효율성 문제에 길들여진 나머지, 문자를 쪼개어 비교하는 것은 생각하지도 않았었다. 이는 간단하지만 시간이 상당히 오래 걸리는 작업이기 때문이다. 그래서 굳이 돌고돌아 조금더 어려운 방법이지만 빠른 방법이 뭐가 있을까 하다가 배열 스택을 생각해냈고, 이를 적용해 풀어보다가 도저히 아닌 거 같아 몇몇 게시글을 찾아보니 문자열을 쪼개 비교하는 것이 아닌가. 그래서 작성한..
16441번: 아기돼지와 늑대 첫 번째 줄에는 격자의 행의 수를 나타내는 N (3 ≤ N ≤ 100) 과 격자의 열의 수를 나타내는 M (3 ≤ M ≤ 100) 이 주어집니다. 두 번째 줄부터 N개의 줄에 지도의 정보를 나타내는 길이가 M인 문자열 www.acmicpc.net [BFS] 빙판('+')만 주의하면 될 문제인줄 알고 섯불리 제출했다가 오답처리를 당했다. 그 이유는 조금 뒤에서 설명하고 우선 문제의 접근법은, 문제에서 주어진 입력을 받으며 늑대의 위치를 기억한다. 그리고 BFS 함수의 인자로 늑대들의 위치를 준다 늑대들의 위치에서 각자 BFS를 수행하는데, 빙판('+')을 만나면 산('#')이나 초원('.')을 만날 때 까지 쭉 미끄러진다. 이 부분을 구현하는 메서드는 다음과 같다. /* di..
1034번: 램프 첫째 줄에 N과 M이 주어진다. N은 행의 개수이고, M은 열의 개수이다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 램프의 상태가 주어진다. 1이 켜져있는 상태이고, 0이 꺼져 www.acmicpc.net 이 문제를 보고 실제로 불을 껏다 켰다 할 생각을 하니 막막했었는데.. 그런 생각을 한 것 자체가 너무 1차원적이어서 다른 분의 풀이를 참고하였다. 역시나 스위치를 올렸다 내렸다 하는 일은 존재하지 않았고 패턴을 찾는 것이 관건이었다. 먼저 모든 행을 돌며 각 행에 포함된 0(off)의 개수를 센다. 당연히 0의 개수는 K보다 작거나 같아야 한다. 그 행의 불을 켜려면 0의 개수가 K개 보다 많으면 안되니 말이다. 그리고 이것이 중요한데 K가 짝수라면 0..
9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net [동적 프로그래밍] 동적 프로그래밍으로 풀어도 되고, 홀/짝으로 풀어도 된다. 상근이가 [1, 3, 5, 7, 9, ...] 즉 홀수일때 반드시 이기고, 창영이는 나머지 짝수일 때 반드시 이긴다. # Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(..
코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr [3진수] 10진수를 3진수로 바꾸는 것인데, 3을 모두 4로 바꾸면 된다. 효율성을 체크하는 문제이므로 String을 사용하여 "+"를 쓰면 통과하지 못할 듯 하다. 그러므로 StringBuilder를 써서 문자를 붙여주도록 하자. 18(3) = 18 / 1 = 18 % 3 = 0 -> 3 15 / 3 = 5 % 3 = 2 9 / 9 = 1 % 3 = 1 # Code class Solution { public String solution(int n) { StringBuilder sb = new StringBuilder(); int div = 1; while(true){ int mok = n / div; if(mok == 0) bre..
16768번: Mooyo Mooyo In the example above, if $K = 3$, then there is a connected region of size at least $K$ with color 1 and also one with color 2. Once these are simultaneously removed, the board temporarily looks like this: 0000000000 0000000300 0054000300 1054500030 220000 www.acmicpc.net [DFS] 뿌요뿌요(?)와 비슷한 방식의 게임이라고 하며, 0은 빈 칸이고, 1~9로 이루어진 각각 다른 색의 세포가 10 x N 격자에 있는데 최소 K개의 같은 색인 인접(상하좌우)한 세..
팀 프로젝트를 진행하다가 JQuery를 안쓰고 Ajax를 사용하려니 코드량도 길고 반복되는 코드가 많아져서 조잡하지만 간단하게 ajax를 사용할 수 있는 모듈을 만들어보았다. 실용성은 그다지 모르겠으나.. 나의 의도대로 잘 동작하긴 한다. 이는 요긴하게 쓰일 수 있는 모듈이므로 차차 업데이트를 진행할 예정이다. function ajax(obj){ const xhr = new XMLHttpRequest(); var method = obj.method || 'GET'; var url = obj.url || ''; var data = obj.data || null; if(obj.contentType) xhr.setRequestHeader('Content-Type', obj.contentType); /* 성공/..
17244번: 아맞다우산 경재씨는 저녁 약속을 가기 전 챙기지 않은 물건들이 있는 지 확인하고 있다. 필요한 물건은 전부 챙긴 것 같았고 외출 후 돌아오는 길에 경재씨는 외쳤다. "아 맞다 우산!!!" 경재 씨는 매번 외출 www.acmicpc.net [BFS + 비트마스크] N x M 격자 맵에서 'X'로 표시된 모든 물건을 챙기고 탈출구 'E'로 최소한의 움직임으로 나가는 방법을 찾는 문제. 격자의 크기 제한이 최대 50x50이고 물건의 개수가 최대 5개라서 비트마스킹을 안써도 메모리적인 부분에서 큰 손실은 없을 것 같으나, 물건이 모두 'X'로 동일하여 현재 내가 특정 정점에 방문했을 때, 어떤 물건을 갖고 있는 지를 체크하는 것이 비트마스킹만큼 좋은 것이 없기에 비트마스킹을 사용했다. 먼저 입력을..