일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- select
- 코딩테스트
- Hackerrank
- array.push()
- 코딩공부
- 재귀함수
- 정규표현식
- node.js
- 자바스크립트
- 프로그래머스
- Programmers
- 블록체인
- array.slice()
- SQL
- 역행자
- 코플릿
- Developer_JoyKim
- array
- 최강의 인생
- 알고리즘
- 배열
- 개발자_조이킴
- join
- for문
- Where
- MySQL
- 코드스테이츠
- Algorithms
- 개발자의 책장
- JavaScript
Archives
- Today
- Total
CodingSpace
구현 - 시각 본문
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는
모든 경우의 수를 구하는 프로그램을 작성하시오.
예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
- 00시 00분 03초
- 00시 13분 30초
반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안되는 시각이다.
- 00시 02분 55초
- 01시 27분 45초
입력 조건
- 첫째 줄에 정수 N이 입력된다. (0 ≤ N ≤ 23)
출력 조건
- 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다.
입력 예시
- N : 5
출력 예시
- 11475
My Solution (javascript)
// startTime과 endTime을 비교해서 startTime과 endTime이 같으면 false 반환
function compare(startTime, endTime) {
let [startHour, startMin, startSec] = startTime.split(":");
let [endHour, endMin, endSec] = endTime.split(":");
if ((Number(endHour) - Number(startHour)) > 0) return true;
if ((Number(endMin) - Number(startMin)) > 0) return true;
if ((Number(endSec) - Number(startSec)) > 0) return true;
else return false;
}
// time에 3이 존재하는지 체크하는 함수
function check(time) {
let hour = time.split(":")[0]
let min = time.split(":")[1]
let sec = time.split(":")[2]
// 3이 시간(hour)이나 분(min)이나 초(sec)에 포함되면 true 반환
if (hour.indexOf('3') !== -1 || min.indexOf('3') !== -1 || sec.indexOf('3') !== -1) {
return true;
} else { // 3이 포함되지 않으면 false 반환
return false;
}
}
// time에 +1초 증가시켜주는 함수
function next(time) {
let [hour, min, sec] = time.split(":");
sec = Number(sec) + 1;
// sec가 60인 경우 sec을 0으로 업데이트 및 min + 1분
if (sec === 60) {
sec = 0;
min = Number(min) + 1;
}
// min가 60인 경우 min을 0으로 업데이트 및 hour + 1시간
if (min === 60) {
min = 0;
hour = Number(hour) + 1;
}
// +1초 증가시킨 값 반환
return hour.toString() + ":" + min.toString() + ":" + sec.toString();
}
function count(N) {
let count = 0;
let start = "00:00:00";
let end = N.toString() + ":" + "59" + ":" + "59";
// start가 end와 같은 값이 될때까지 while문 실행
while (compare(start, end)) {
// start에 3이 있으면 count + 1
if (check(start)) count++;
// start에 +1초
start = next(start);
};
return count;
}
'이것이 취업을 위한 코딩 테스트다 with 파이썬 > Chapter4. 구현' 카테고리의 다른 글
구현 - 왕실의 나이트 (2) | 2023.08.31 |
---|---|
구현 - 상하좌우 (0) | 2023.08.22 |
Comments