Kirby [알고리즘] 2023 Kakao Blind 개인정보 수집 유효기간 (Java)
알고리즘/알문풀(백준, 프로그래머스, 코드트리)

[알고리즘] 2023 Kakao Blind 개인정보 수집 유효기간 (Java)

ragabys 2024. 1. 11.

https://school.programmers.co.kr/learn/courses/30/lessons/150370

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

카카오 기출 문제치고는 난이도가 상당히 낮은, lv1 수준의 문제였다.

 

흔히 보이는 날짜 계산 형태의 문제인데다가 모든 달의 날짜가 28일로 고정되어 있어

 

연도/달/일 을 각각 일수로 변환하여 계산하는 식으로 구했다.

 

카카오 코테 문제치고는 너무 쉽다고 생각했지만 알고보니 1번 문제일 뿐더러

 

막상 프로그래머스로 푸니깐 length나 split 같은 함수 정확한 표기방식 헷갈려서 좀 헷갈렸다.

 

코테 준비할 때는 자동완성에 의지 안 하는 연습을 해야겠다는 생각이 가장 많이 들었던 문제였다.

 

 

 

import java.io.*;
import java.util.*;

class Solution {
    public int[] solution(String today, String[] terms, String[] privacies) {
        int result[];
        int[] answer = new int[privacies.length];
        int idx=0;
        HashMap<Character,Integer> contact;
        contact = new HashMap<>();
        StringTokenizer st;
        
        for(int i=0;i<terms.length;i++){
            String input[] = terms[i].split(" ");
            contact.put(input[0].charAt(0),Integer.parseInt(input[1])*28);
        }
        
        String day[] = new String[3];
        st = new StringTokenizer(today,".");
        day[0] = st.nextToken();
        day[1] = st.nextToken();
        day[2] = st.nextToken();
        
        int current = Integer.parseInt(day[0])*336 + Integer.parseInt(day[1])*28 + Integer.parseInt(day[2]);
        
        for(int i=0;i<privacies.length;i++){
            String priv[] = privacies[i].split(" ");
            String date[] = new String[3];
            st = new StringTokenizer(priv[0],".");
            date[0] = st.nextToken();
            date[1] = st.nextToken();
            date[2] = st.nextToken();

            int privDay = Integer.parseInt(date[0]) * 336 + Integer.parseInt(date[1]) * 28 + Integer.parseInt(date[2]);
            int num = privDay + contact.get(priv[1].charAt(0));
            if(current>=num){
                answer[idx]=i+1;
                idx++;
            }
        }
        
            result = new int[idx];
            
            System.arraycopy(answer,0,result,0,idx);
        return result;
    }
}

 

댓글