일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- code
- iPhone
- ios
- 맥용
- 네이버
- 헬스
- 네이버구름
- java
- Cordova
- Swift
- 코딩
- 네이버알고리즘
- 구름TEST
- codility
- 안드로이드
- android
- 아이폰 해상도
- error
- 구름알고리즘
- 코딩테스트
- 아이폰
- codemonkey
- 맥북
- algorism
- Object-c
- naver
- 알고리즘
- objective-c
- 아이폰 비율
- goormtest
- Today
- Total
그래오늘은이거야
[Java]goorm test(구름TEST) 알고리즘 algorithm 버스 추천하기 본문
[Java]goorm test(구름TEST) 알고리즘 algorithm 버스 추천하기
jinhongstar 2019. 8. 30. 15:11안녕하세요 Leo 입니다.
이번 소개해줄 알고리즘 사이트는 구름TEST 라는 사이트 인데요,
NHN에서 투자 받아 개발한 알고리즘 사이트 입니다.
회사면접 코딩테스트를 하는 유명한 사이트죠...
저는 IOS (Object-c , Swift) 위주로 개발을 하고 가끔 안드로이드 개발을 하는데요...
회사에서 Java 로 코딩테스트를 하라고 해서 ... 하라면 해야죠... 풀어봤습니다.
제가 20문제 이상 푼것 같은데 이걸 공유 해드리도록 하죠...
이 글이 누군가에겐 "약"이 되고 누군가에겐 "독"이 될 것이다.
개발자라면 적어도 기본 알고리즘 정도는 스스로 학습하여 풀어봐야 한다.참고로 코딩테스트 문제를 제출 한 심사위원 분도제 블로그에서 답을 확인 한다는 것을 역으로 알아두고 보세요!! ㅎㅎ
알고리즘 문제
문제 : 당신은 위치기반 출퇴근 경로 추천 서비스 스타트업 구름BUS의 신입 개발자이다. 신입 개발자로서 당신은 첫 업무를 부여 받았는데, 바로 가장 빨리 탈 수 있는 버스를 추천하는 기능이다.
현재 위치에서 사용자가 탈 수 있는 버스 5대의 도착 시간이 입력으로 주어진다.
모든 버스들은 항상 같은 시간에 도착하며 요일에 따른 차이는 없다.
당신은 이 중 현재 가장 빨리 도착할 버스를 사용자에게 추천해주어야 한다.
현재 사용자가 있는 위치를 경유하는 다섯 대의 버스가 정기적으로 도착하는 시간이 입력으로 주어진다. 이 중 가장 빨리 도착하는 버스가 도착할 때 까지 기다려야 하는 시간을 분 단위로 출력하는 프로그램을 작성하시오. 다음 날의 버스를 탑승하는 경우도 고려해야 함을 유의한다.
입력 조건
문제의 입력은 두 줄로 이루어져 있다.
첫 줄에는 현재 시간이 HH:mm형식으로 주어진다.
두 번째 줄에는 현재 정류장에 정기적으로 버스들이 도착하는 시간이 HH:mm형식으로 공백으로 구분되어 다섯 개 주어진다.
모든 시간은 24시간 형식으로 시와 분으로 주어지며 00:00 ~ 23:59 사이의 시간이다.
출력 조건
현재 시간부터 가장 먼저 도착하는 버스가 도착할 때 까지 기다려야 하는 시간을 정수 분 단위로 한 줄에 출력한다.
입/출력 예시
⋇ 입출력 형식을 잘 지켜주세요.
␣ : 공백
↵ : 줄바꿈
−⇥ : 탭
보기 입력 1
17:22
05:14 00:55 06:14 07:35 22:45
출력 1
323
보기 입력 2
14:53
14:21 05:37 14:39 21:23 02:30
출력 2
390
보기 입력 3
09:38
08:32 17:24 21:33 12:43 11:46
출력 3
128
======================================================================================================
풀이
======================================================================================================
/* package 구문을 넣으면 안됩니다 */
import java.util.*;
import java.io.*;
/* [Notice for Java]
* - 기본 제공되는 뼈대 코드는 입출력의 이해를 돕기위해 제공되었습니다.
* - 뼈대코드의 활용은 선택사항이며 코드를 직접 작성하여도 무관합니다.
*
* - 별도의 병렬 처리나 시스템콜, 네트워크/파일접근 등을 하지 마세요 2
* - 입출력의 양이 많은 문제는 BufferedReader와 BufferedWriter를 사용하면 시간을 단축할 수 있습니다.
* - 클래스 이름은 항상 Main이어야 합니다. 주의하세요.
* - 모든 입력과 출력은 System.in과 System.out 스트림을 이용해야 합니다.
이런 문제는 이해가 좀 쉽네 ...
*/
public class Main{
//표준입력을 수행할 Scanner를 선언한다
public static Scanner scanner = new Scanner(System.in);
public static void main(String[] args)
{ //프로그램의 시작부
int sh, sm;
int[] bh = new int[5];
int[] bm = new int[5];
String input;
String[] splited;
//현재 '시'와 '분'을 입력 받는다
input = scanner.next();
splited = input.split(":");
sh = Integer.parseInt(splited[0]);
sm = Integer.parseInt(splited[1]);
int closeTimeHour = 0;
int closeTimeMin = 0;
String coloseTimes = "";
String coloseTimesMin = "";
for(int i = 0 ; i < 5; i ++){
//bh[i] := i번째 버스가 도착하는 '시'
//bm[i] := i번째 버스가 도착하는 '분'
input = scanner.next();
splited = input.split(":");
bh[i] = Integer.parseInt(splited[0]);
bm[i] = Integer.parseInt(splited[1]);
//첫번째로 시간 보다 큰 값을 가져온다.
//지금 시간에서 제일 가까운시간
//최소값들을 구한다.
if(sh < bh[i]){
//다음 버스까지 남은 시간을 이 변수에 저장 한다.
coloseTimes = coloseTimes + bh[i] + bm[i] + ",";
}
}
//현재 시간보다 더 큰시간을 전체 가져온다
String[] closeTimeArr = coloseTimes.split(",");
//그중에 제일 작은 시간을 찾는다.
int minVal = Integer.parseInt(closeTimeArr[0]);
for(int i=0; i < closeTimeArr.length; i++){
//제일 작은 시간이 지금 시간보다 가까운 시간.
if(minVal > Integer.parseInt(closeTimeArr[i])){
minVal = Integer.parseInt(closeTimeArr[i]);
}
}
String lastTime = Integer.toString(minVal);
String minHour = lastTime.substring(0,2);
String minMinite = lastTime.substring(2,4);
//가까운 시간이 더 클것이다!! 그래서 반대로 식 계산을해야함
int left = ((Integer.parseInt(minHour) * 60) - (sh * 60)) + (Integer.parseInt(minMinite) - sm);
//정답을 출력한다
System.out.println(left);
}
}
참고로 저는 알고리즘 풀이 점수는 높은 점수는 아닙니다.
일단 푸는 거에 집중했습니다. 알고리즘에 정답은 없습니다.
더 좋은 알고리즘을 만들어 내는게 목표 입니다.
알고리즘에 대하여 더 이야기 하실분은 댓글남겨주세요!
구름TEST 화면
구름테스트, 구름TEST 가 지원하는 프로그래밍 언어
그 외 Scala, Pascal, Lua, Objective-C, Rust, Cobol, Clojure, Smalltalk, Dart, Haskell, Perl, Common Lisp, D, Erlang 등
구름테스트, 구름TEST 를 2019년 현재 적용중인 회사
'세상 개발 > Java(SpringFramework)' 카테고리의 다른 글
[Java]goorm test(구름TEST) 알고리즘 algorithm 사다리 타기 (0) | 2019.08.30 |
---|---|
[Java]goorm test(구름TEST) 알고리즘 algorithm 점수 계산하기 (0) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 16진수 (2) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 가동 시간 예측하기 (0) | 2019.08.30 |
[Java]goorm test(구름TEST) 알고리즘 algorithm 알파벳 빈도 구하기 (0) | 2019.08.30 |