본문 바로가기

카카오인턴십6

거리두기 확인하기(Lv.2) 문제 설명 입출력 예시 요약 대기실별로 맨해튼 거리가 2 이하인 응시자가 있는지 확인(단, 파티션이 막고 있는 경우 제외) 풀이 접근 방식 1. 응시자들의 맨해튼 거리가 1인 경우 → false 리턴 2. 응시자들의 맨해튼 거리가 2인 경우 → 같은 방향으로 두 칸 떨어져 있는 경우 응시자들 사이에 빈 공간(O)이 있다면 false → 대각선으로 떨어져 있는 경우 응시자의 (위쪽, 왼쪽) / (위쪽, 오른쪽) / (아래쪽, 왼쪽) / (아래쪽, 오른쪽) 위치에 빈 공간(O)이 있다면 false 코드리뷰 import java.util.*; class Solution { int N, M; String[][] maps; // 상하좌우 한 칸씩 탐색을 위한 배열 int[] dirY1 = {-1, 1, 0, 0}.. 2024. 4. 16.
숫자 문자열과 영단어(Lv.1) 문제 설명 입출력 예시 요약 문자를 숫자로 바꾸기 풀이 접근 방식 1. 문자를 숫자로 바꾸기 → replaceAll() 메소드를 통해 변환 코드리뷰 import java.util.*; class Solution { public int solution(String s) { // 숫자를 문자형태로 담은 배열 만들기 String[] arr = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"}; for(int i = 0; i < arr.length; i++) { s = s.replaceAll(arr[i], String.valueOf(i));// repalceAll()을 통해 숫자로 변환 } int answ.. 2024. 3. 22.
크레인 인형뽑기 게임(Lv.1) H3 중제목 입출력 예시 요약 바구니에 2개의 같은 인형이 위치하면 사라짐 풀이 문제 해석 넣기 전 바구니의 개수가 1개 이상일 경우, 뽑은 인형과 비교해서 같으면 넣지 않고 바구니의 담긴 마지막 인형 제거 접근 방식 1. moves = col+1로 생각 → 열의 번호(moves[i])가 1번부터 시작 2. moves[i]에 해당하는 열의 row를 최대 배열 크기만큼 순회 → 0은 인형이 없는 것을 뜻하기 때문에 0이 아닐때까지 반복해서 찾는다. 코드리뷰 import java.util.*; class Solution { public int solution(int[][] board, int[] moves) { int count = 0; List list = new ArrayList();// 바구니로 사용할.. 2024. 3. 21.
키패드 누르기(Lv.1) 문제 설명 입출력 예시 요약 1,4,7은 왼손 3,6,9는 오른손 나머지는 가까운 손이 누른다. 풀이 문제 해석 좌표로 생각하고 오른쪽 왼쪽 이동한 칸 수 계산하기 접근 방식 1. 각 번호를 row와 col 형식의 좌표로 구성 → 1번: (0, 0), 2번: (0, 1), ... , 0번: (3, 1) 2. 왼손 오른손의 시작위치 설정 → 왼손: (3, 0), 오른손(3, 2) 3. 1,4,7은 왼손 3,6,9는 오른손 나머진 가까운 손 → 누를 번호와 각 손의 위치를 계산해서 가까운 위치를 해당 번호 좌표로 변경 코드리뷰 import java.util.*; class Solution { class HandPosition {// 손의 위치를 담을 객체 클래스 정의 int row; int col; publ.. 2024. 3. 21.
성격 유형 검사하기(Lv.1) 문제 설명 입출력 예시 요약 4가지 질문 유형에 따른 점수를 계산해서 성격유형 return 풀이 문제 해석 알파벳 순서와 점수에 따라 나눠서 계산하기 접근 방식 1. 질문 유형을 2개로 나누기 → [ RT, CF, MJ, AN ] -> [ R, T, C, F, M, J, A, N ] 2. 점수에 따라 각 알파벳에 해당하는 값 증가 → RT 7의 경우: T + 3 3. 알파벳 순서 고려 → 만약 R과 T의 점수가 같은 경우 R 선택 코드리뷰 import java.util.*; class Solution { public String solution(String[] survey, int[] choices) { HashMap map = new HashMap(); String[] arr = {"R", "T", ".. 2024. 3. 21.
가장 많이 받은 선물(Lv.1) 문제설명 입출력 예시 요약 선물을 주고받은 히스토리를 비교해서 조건에 따라 다음달에 선물을 가장 많이 받을 친구가 받을 선물의 개수 구하기 풀이 문제 해석 선물을 받을 경우의 수 구하기 1) 서로 주고 받은 선물을 비교했을 때 더 많이 준 경우 2) 서로 주고 받은 선물 개수가 같다면 선물지수를 비교해서 더 큰 경우 접근 방식 1) 이차원 배열을 생성하고 서로 주고 받은 선물의 개수를 표시한다. → gifts 배열의 요소를 split해서 이름을 index로 바꾼 후 해당 위치에 += 1로 개수 증가 2) 전체 인원에 대해 '내가 준 선물 개수'에서 '내가 받은 선물 개수'를 빼서 선물 지수를 구한다. → 서로 주고 받은 선물 개수가 같은 경우 선물 지수를 비교한다. → 선물 지수 또한 같다면 해당 인원끼.. 2024. 3. 18.