https://school.programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
public int solution(String dartResult) {
int answer = 0;
List<Integer> result = new ArrayList<>();
String number = "";
for (int i = 0; i < dartResult.length(); i++) {
switch (dartResult.charAt(i)) {
case 'S':
result.add((int) Math.pow(Integer.parseInt(number), 1));
number = "";
break;
case 'D':
result.add((int) Math.pow(Integer.parseInt(number), 2));
number = "";
break;
case 'T':
result.add((int) Math.pow(Integer.parseInt(number), 3));
number = "";
break;
case '*':
if (result.size() == 1) {
result.set(0, result.get(0) * 2);
} else if (result.size() == 2 || result.size() == 3){
result.set(result.size() - 2, result.get(result.size() - 2) * 2);
result.set(result.size() - 1, result.get(result.size() - 1) * 2);
}
break;
case '#':
result.set(result.size() - 1, result.get(result.size() - 1) * -1);
break;
default:
number += dartResult.charAt(i);
break;
}
}
answer = result.get(0) + result.get(1) + result.get(2);
return answer;
}
📍포인트
1 .처음 다트 3번 던지는 기준을 어떻게 나눌지가 가장 고민이였음.
2. 그 뒤의 로직은 리스트 순서 관리만 잘 하면 해결.
3. 재활 2일차
📍삽질
1. 다트 게임 3번을 나눠서 진행 vs 한 라인씩 계산해가면서 진행. 전자부터 시작했지만 구현 실패 후, 후자로 마무리.
2. 맨 처음에는 정규식으로 3번의 다트를 구분하려다가 시간을 날림. -> 앞으로 정규식은 차선책으로만 생각하자..
'코딩테스트' 카테고리의 다른 글
[코딩테스트(Java)] 프로그래머스 50048 베스트앨범 (0) | 2025.03.12 |
---|---|
[코딩테스트(Java)] 프로그래머스 92334 신고 결과 받기 (1) | 2025.03.11 |
[코딩테스트(Java)] 프로그래머스 72410 신규 아이디 추천 (0) | 2025.03.09 |
[코딩테스트(Java)] 프로그래머스 42889 실패율 (0) | 2025.03.08 |
[코딩테스트(Java)] 프로그래머스 17681 비밀지도 (0) | 2025.03.06 |