반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
[Java 자바] 프로그래머스 > Lv1. [1차] 다트 게임
https://programmers.co.kr/learn/courses/30/lessons/17682 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 문제 설명 카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트
yeoeun-ji.tistory.com
class Solution {
public int solution(String dartResult) {
int answer = 0;
int[] dart = new int[3];
int idx = 0;
String numStr = "";
for(int i=0; i<dartResult.length() ; i++) {
char c = dartResult.charAt(i);
// 숫자인 경우
if('0' <= c && c <= '9') {
numStr += String.valueOf(c);
}
else if(c=='S' || c=='D' || c=='T') {
int n = Integer.parseInt(numStr);
if(c=='S') {
dart[idx++] = (int)Math.pow(n, 1);
}
else if(c=='D') {
dart[idx++] = (int)Math.pow(n, 2);
}
else {
dart[idx++] = (int)Math.pow(n, 3);
}
numStr = ""; // 다시 초기화
}
// 옵션인 경우
else {
if(c == '*') {
dart[idx-1] *= 2;
if(idx > 1) dart[idx-2] *= 2;
}
else {
dart[idx-1] *= (-1);
}
}
}
for(int i : dart) {
answer += i;
}
return answer;
}
}
S/D/T랑 */#로 split해서 나눠서 계산해볼까 생각해보다가 포기....
스택도 쓰면 될거 같은데 어떻게 해야하나 경우의 수를 막 고민해보다가
시간이 좀 길어지길래 다른 분 코드를 참고했다...
내가 유의해야 할 부분은 35~42번째 줄 !
나는 아스키코드와... char 타입에 참 약한 것 같다...
🔺 다른 풀이들
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(String dartResult) {
Stack<Integer> stack = new Stack<>();
int sum = 0;
for (int i = 0; i < dartResult.length(); ++i) {
char c = dartResult.charAt(i);
// 숫자인 경우
if (Character.isDigit(c)) {
sum = (c - '0');
// 10인 경우
if (sum == 1 && i < dartResult.length() - 1 && dartResult.charAt(i + 1) == '0') {
sum = 10;
i++;
}
stack.push(sum);
}
// 숫자가 아닌 경우
else {
int prev = stack.pop();
if (c == 'D') {
prev *= prev;
}
else if (c == 'T') {
prev = prev * prev * prev;
}
else if (c == '*') {
if (!stack.isEmpty()) {
int val = stack.pop() * 2;
stack.push(val);
}
prev *= 2;
}
else if (c == '#') {
prev *= (-1);
}
stack.push(prev);
}
}
int totalScore = 0;
while (!stack.isEmpty()) {
totalScore += stack.pop();
}
return totalScore;
}
}
스택을 활용하셨다!
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 1] 로또의 최고 순위와 최저 순위 (0) | 2023.03.29 |
---|---|
[프로그래머스/Lv. 1] [1차] 비밀지도 (0) | 2023.03.24 |
[프로그래머스/Lv. 1] 체육복 (1) | 2023.03.16 |
[프로그래머스/Lv. 1] 가장 가까운 같은 글자 (0) | 2023.03.15 |
[프로그래머스/Lv. 1] 푸드 파이트 대회 (0) | 2023.03.15 |