プログラマー[Kakao]駐車料金の計算(Java)
リンク
質問リンク
問題の説明
駐車場の料金表と車両進入(入)出(出)記録の場合、車両別に駐車料金を計算したいです.次に例を示します.
せいげんじょうけん
1≦記録長≦1000
I/O例説明
リンク参照
に答える
Kakaoの文字列問題はいつも問題を解く展開が重要らしい.でもいつもそれを思い出せない
この問題は集中さえすれば、自分のやり方で解決できるのだろうか.実施が完了すると、テストケースは1回で合格します.
import java.util.*;
class Solution {
public int[] solution(int[] fees, String[] records) {
List<Integer> ans = new ArrayList();
int[] answer = {};
Arrays.sort(records, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.substring(6, 10).compareTo(s2.substring(6,10));
}
});
boolean in = false;
int time = 0, final_time = 0;
String time_info, in_or_out;
String car_number = records[0].substring(6,10);
for(int i = 0; i < records.length; i++) {
time_info = records[i].substring(0,5);
if(!car_number.equals(records[i].substring(6,10)))
{
if(in)
{
final_time += 23 * 60 + 59 - time;
in = false;
}
if(final_time <= fees[0])
ans.add(fees[1]);
else
ans.add(fees[1] + (int)Math.ceil((double) (final_time - fees[0]) / fees[2]) * fees[3]);
car_number = records[i].substring(6,10);
final_time = 0;
}
in_or_out = records[i].substring(11,12);
int hour = Integer.parseInt(records[i].substring(0,2)) * 60;
int min = Integer.parseInt(records[i].substring(3,5));
if(in_or_out.equals("I")) {
time = hour + min;
in = true;
}
else {
final_time += hour + min - time;
in = false;
}
}
if(in) {
final_time += 23 * 60 + 59 - time;
in = false;
}
if(final_time <= fees[0])
ans.add(fees[1]);
else
ans.add(fees[1] + (int)Math.ceil((double) (final_time - fees[0]) / fees[2]) * fees[3]);
return ans.stream().mapToInt(k -> k).toArray();
}
}
Reference
この問題について(プログラマー[Kakao]駐車料金の計算(Java)), 我々は、より多くの情報をここで見つけました https://velog.io/@qodlstjd12/프로그래머스-Kakao-주차-요금-계산-Javaテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol