본문 바로가기

Algorithm283

[2020 카카오 기출] 문자열 압축(JAVA) programmers.co.kr/learn/courses/30/lessons/60057 시뮬레이션 문제입니다. 문자열 압축 계산을 위해 사용할 수 있는 자료구조는 다양합니다. 편한 방식을 사용하면 될 것 같고 저는 HashMap을 통해서 압축가능여부를 계산했습니다. 주어진 문자열을 S라고 표현하겠습니다. 1. 주어진 문자열 S를 길이 1부터 ~ S / 2 길이만큼 LEN 단위로 잘라서 압축시도를 합니다. 2. 길이 1부터 S/2 길이만큼 압축한 결과중 가장 길이가 짧은 것을 리턴하면 됩니다. 코드: github.com/cotchan/algorithm/blob/main/java/PROGRAMMERS/PG60057.java 2021. 4. 21.
[2020 카카오 인턴십] 키패드 누르기(JAVA) programmers.co.kr/learn/courses/30/lessons/67256 시뮬레이션 문제입니다. 1. 왼손 엄지, 오른손 엄지 위치를 Pair 자료형을 정의하여 y,x를 저장합니다. 2. 123456789*0# 숫자칸을 [[0,1,2], [3,4,5], [6,7,8], [9,10,11]] 로 매핑하여 해결합니다. 3. 2 5 8 0을 누르는 시점에 해당 숫자 칸과 왼손 엄지, 오른손 엄지의 거리를 계산합니다. 4. 엄지 선택 기준은 문제의 기준을 따릅니다. 코드: github.com/cotchan/algorithm/blob/main/java/PROGRAMMERS/PG67256.java 2021. 4. 21.
[2020 카카오 기출] 자물쇠와 열쇠(JAVA) programmers.co.kr/learn/courses/30/lessons/60059 시뮬레이션 문제입니다. keySize = M * M인 열쇠(KEY) 크기에서 M을 의미합니다. lockSize = N * N인 자물쇠(LOCK) 크기에서 N을 의미합니다. 1. 주어진 열쇠에 대해 90, 180, 270도 회전한 형태를 계산하여 총 4개의 열쇠형태를 저장합니다. 2. 열쇠와 자물쇠가 한 칸이라도 맞닿아있는 경우를 계산하기 위해 2*M + N 크기의 배열을 만듭니다. 3. 2*M + N 배열의 한 가운데 지점에 LOCK 배열을 복사합니다. (즉, LOCK 배열 시작인덱스가 M,M) 4. KEY의 탐색 시작지점을 2중포문으로 (0,0)부터 (M+N, M+N)까지 지정 후 KEY로 자물쇠를 열 수 있는지 계.. 2021. 4. 21.
[2019 카카오 기출] 크레인 인형뽑기 게임(JAVA) programmers.co.kr/learn/courses/30/lessons/64061 시뮬레이션 문제입니다. 맨 윗칸에 인형이 있는지만 체크하면 되므로 스택으로 정사각 격자를 관리했습니다. 또한 뽑은 인형 목록도 맨 윗 칸에 있는 인형이랑만 비교하면 되므로 스택을 사용했습니다. 나머지는 문제의 요구 조건대로 해결하면 됩니다. 코드: github.com/cotchan/algorithm/blob/main/java/PROGRAMMERS/PG64061.java 2021. 4. 14.