최근에 코테가 정말 자주 있는데
Java로도 봤다가 JavaScript로도 봤다가(FE라서;) SQL로도 봤다가 아무튼 점점 얼렁뚱땅이 되어가는 중
문제는 아래 링크로.
https://school.programmers.co.kr/learn/courses/30/lessons/388351
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
전에도 말했듯 나는 풀이 과정에서 구조화(클래스 뚝딱 만들어서 정렬 기준 정해놓는 등의 커스터마이징)하는 걸 좋아하는데
이게 어느 정도냐면 학부 때 C 배울 때도 구조체... 라는 존재가 정말 마음에 들었던 전적이 있다(??)
다른 사람 답안을 보면 클래스를 하나도 안 쓰고도 문제를 풀어내던데 진짜 신기함
나는 그렇게 풀다 보면(특히 구현) 내 코드가 이해가 안 된다 ㅋㅋ
나중에 봤을 때도 그렇고 주석이 없으면 뭔 소리를 해 놓은 건지 모르겠음
오늘 코테에서도 나름 구조화를 시킨다고 시키는데도 중간에 디버깅이 안 돼서 진짜 울 뻔했다
function solution(schedules, timelogs, startday) {
// startday가 6이거나 7이면 로직과 관계 없음
let answer = 0;
for(let i = 0; i<schedules.length; i++){
const temp = new Schedule(schedules[i], timelogs[i])
if(temp.hasGift(startday)) answer++;
}
return answer;
}
class Schedule {
constructor(due, schedules){
this.due = new Time(due)
this.due.add(10) // 10분 준다
this.logs = []
for(let t of schedules){
this.logs.push(new Time(t))
}
}
hasGift(day){
for(let i = 0; i<this.logs.length; i++){
if((day+i)%7 == 0 || (day+i)%7 == 6) continue;
if(!this.due.isSafe(this.logs[i])) return false;
}
return true
}
}
class Time {
constructor(t){
this.hour = Math.floor(t / 100)
this.min = t % 100
}
add(mins){
this.min += mins
if(this.min >= 60){
this.hour++
this.min -= 60
}
}
isSafe(newT){
if(newT.hour > this.hour) return false
else if(newT.hour == this.hour) {
if(newT.min > this.min) return false
return true
}
return true
}
}
문제를 풀면서 사실 ... Time의 add()에서 고민을 했다. 뭔가 직관적인 코드는 맞는데, .... 좀 아쉬움이 남는다.
그리고 호닥닥 풀다 보니 어쩔 수 없이 쓰긴 했지만
temp를 변수명으로 쓰는 걸 정말 안 좋아하는데!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
마땅한 단어가 떠오르지 않았다. 반복문 돌면서 한 번 만들어서 체크하고 버리는 변수라서 ........ .....
근데 뭐 이걸로 따지고 들어갈 것 같으면 애초에 반복문에 i는 왜 쓰고 (iterator라는 걸 알긴 하지만, 그 뒤에 j 나오고 k 나오는 게 ㅋㅋㅋ...)
ㅋㅋㅋㅋㅋㅋㅋㅋ
아 ..... 지금보니 저거 아니어도 변수명이 조금씩 잘못된 게 많네
자바와 자바스크립트를 왔다갔다하며 코테를 풀다 보면 걍 책상을 팍팍 치면서
아~~~이거 왜 안 돼 ㅠㅠ 하는 순간이 종종 오는데 ㅋㅋㅋ
JS로 풀다 보면 ... 아 왜 타입 없어 ~~ 이러고(타입 없어서 궁여지책으로 클래스 쓰는 것 ㅋㅋ)
Java로 풀다 보면 ... 아 왜 호이스팅 없어 ~~ 이런다 ㅋㅋㅋㅋㅋ
징징거릴 시간에 실력을 더 키우도록 하자.
테스트 1 〉 | 통과 (0.15ms, 33.6MB) |
테스트 2 〉 | 통과 (0.18ms, 33.6MB) |
테스트 3 〉 | 통과 (0.18ms, 33.7MB) |
테스트 4 〉 | 통과 (0.15ms, 33.6MB) |
테스트 5 〉 | 통과 (0.14ms, 33.6MB) |
테스트 6 〉 | 통과 (0.15ms, 33.6MB) |
테스트 7 〉 | 통과 (3.57ms, 37.4MB) |
테스트 8 〉 | 통과 (3.58ms, 37.4MB) |
테스트 9 〉 | 통과 (4.13ms, 37.3MB) |
테스트 10 〉 | 통과 (3.81ms, 37.4MB) |
테스트 11 〉 | 통과 (3.93ms, 37.3MB) |
테스트 12 〉 | 통과 (4.34ms, 37.3MB) |
테스트 13 〉 | 통과 (3.78ms, 37.4MB) |
테스트 14 〉 | 통과 (3.73ms, 37.4MB) |
테스트 15 〉 | 통과 (4.00ms, 37.3MB) |
테스트 16 〉 | 통과 (3.59ms, 37.3MB) |
테스트 17 〉 | 통과 (3.69ms, 37.3MB) |
테스트 18 〉 | 통과 (4.11ms, 37.4MB) |
테스트 19 〉 | 통과 (3.87ms, 37.3MB) |
테스트 20 〉 | 통과 (4.34ms, 37.6MB) |
테스트 21 〉 | 통과 (3.85ms, 37.4MB) |
테스트 22 〉 | 통과 (4.49ms, 37.4MB) |
테스트 23 〉 | 통과 (4.96ms, 37.3MB) |
테스트 24 〉 | 통과 (3.94ms, 37.4MB) |
테스트 25 〉 | 통과 (0.30ms, 33.7MB) |
테스트 26 〉 | 통과 (0.35ms, 33.7MB) |
테스트 27 〉 | 통과 (0.31ms, 33.7MB) |
테스트 28 〉 | 통과 (1.88ms, 36.6MB) |
테스트 29 〉 | 통과 (1.93ms, 36.5MB) |
테스트 30 〉 | 통과 (1.10ms, 34MB) |
테스트 31 〉 | 통과 (1.88ms, 36.5MB) |
테스트 32 〉 | 통과 (1.89ms, 36.5MB) |
테스트 33 〉 | 통과 (3.60ms, 37.6MB) |
테스트 34 〉 | 통과 (4.07ms, 37.3MB) |
테스트 35 〉 | 통과 (3.76ms, 37.4MB) |
테스트 36 〉 | 통과 (3.91ms, 37.6MB) |
테스트 37 〉 | 통과 (2.15ms, 36.6MB) |
테스트 38 〉 | 통과 (1.89ms, 36.5MB) |
테스트 39 〉 | 통과 (3.95ms, 37.4MB) |
테스트 40 〉 | 통과 (3.85ms, 37.3MB) |
테스트 41 〉 | 통과 (4.00ms, 37.4MB) |
테스트 42 〉 | 통과 (4.00ms, 37.3MB) |
'2025 > Solving' 카테고리의 다른 글
PGMRS_유연근무제(JAVA) (1) | 2025.05.11 |
---|---|
PGMRS_바탕화면 정리(JavaScript) (1) | 2025.05.10 |
PGMRS_석유 시추(PCCP 기출, JAVA) (2) | 2025.04.26 |
PGMRS_퍼즐 게임 챌린지(PCCP 기출, JAVA) (0) | 2025.04.25 |
BOJ_25192 인사성 밝은 곰곰이(JAVA) (0) | 2025.04.11 |
댓글