티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/17682
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 설명
1) string을 한글자씩 파싱
2) 숫자일 경우 -> 10일 경우를 대비해 다음 i까지 확인
3) 스타상(*) 일경우 -> 바로 전의 점수도 같이 2배 해줌. (첫 번째 일경우엔 제외)
4) result 배열에 담아둔 값들을 다 더하면 답
이게 왜 Lv1문제일까 어려웡
3. 코드
class Solution {
public int solution(String dartResult) {
int answer = 0;
char[] dart = dartResult.toCharArray();
int[] result = new int[3];
int sum = 0; // 각 다트 점수 합
int dartCnt = 0; // 다트 수 1 2 3
for(int i=0; i<dartResult.length(); i++) {
if(Character.isDigit(dart[i])) { // 숫자일 경우
if(i!=0) {
result[dartCnt++] = sum;
}
if((int)dart[i+1] == '0') { // 10일 경우
sum = 10;
i++; // 다음 단계 pass
continue;
}
else
sum = dart[i] - '0';
}
if(dart[i] == 'S') {
;
}
else if(dart[i] == 'D') {
sum *= sum;
}
else if(dart[i] == 'T') {
sum = (int)Math.pow(sum, 3); // Math.pow의 리턴형은 double
}
else if(dart[i] == '*') {
sum *= 2;
if(dartCnt != 0) { // 바로 앞에꺼도 2배
result[dartCnt-1] *= 2;
}
}
else if(dart[i] == '#') {
sum *= -1;
}
if(i==dartResult.length()-1 && dartCnt==2) // 마지막
result[dartCnt] = sum;
}
// 다 더해!
for(int i : result) {
answer += i;
}
return answer;
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 실패율 JAVA (0) | 2020.04.30 |
---|---|
프로그래머스 예산 JAVA (0) | 2020.04.30 |
프로그래머스 [1차] 비밀지도 JAVA (0) | 2020.04.30 |
프로그래머스 문자열 내 p와 y의 개수 JAVA (0) | 2019.09.04 |
프로그래머스 완주하지 못한 선수 JAVA (1) | 2019.09.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday