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;
}
}
'알고리즘 > 알문풀(백준, 프로그래머스, 코드트리)' 카테고리의 다른 글
[알고리즘] 2023 Kakao Blind 택배 배달과 수거하기 (Java) (0) | 2024.01.24 |
---|---|
[알고리즘] 2023 Kakao Blind 이모티콘 할인행사 (Java) (0) | 2024.01.17 |
[알고리즘] BOJ 18186 라면 사기(Large) (JAVA) (0) | 2023.10.12 |
[알고리즘] BOJ 18185 라면 사기(Small) (JAVA) (1) | 2023.10.11 |
[알고리즘] BOJ 15486 퇴사 2 (JAVA) (0) | 2023.10.01 |
댓글