ygreenb
yellowgreenblue
ygreenb
전체 방문자
오늘
어제
  • TIL (130)
    • Algorithm & Data Structure (70)
      • 이론 (4)
      • 프로그래머스 (54)
      • 백준 (12)
    • JAVA (4)
    • Android Studio (9)
    • Database (1)
    • WEB (25)
      • HTML+CSS (7)
      • Javascript (5)
      • React (11)
      • Django (1)
      • Node.js (1)
    • Computer Vision (13)
    • Git (8)

블로그 메뉴

  • HOME
  • TAG
  • GITHUB

공지사항

인기 글

태그

  • 깃
  • getOrDefault
  • sort
  • git bash
  • 스택/큐
  • DP
  • Android
  • 해시
  • greedy
  • Queue
  • 프로그래머스
  • reactjs
  • 프로그래머스 Lv.2
  • compareTo()
  • 안드로이드
  • PriorityQueue
  • git
  • HashMap
  • React
  • 깃허브
  • entrySet
  • dfs
  • kotiln
  • Arrays.sort()
  • java
  • 코틀린
  • Comparator
  • stack
  • 백준
  • BFS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ygreenb

yellowgreenblue

Algorithm & Data Structure/프로그래머스

[Java] 프로그래머스 : 다트 게임

2022. 2. 14. 18:12

https://programmers.co.kr/learn/courses/30/lessons/17682?language=java 

 

코딩테스트 연습 - [1차] 다트 게임

 

programmers.co.kr

 

풀이

다트 게임은 3번의 기회로 구성되니 각 기회마다 얻을 수 있는 점수를 저장할 배열 score을 만들었다.

dartResult를 char배열로 만들어 for문으로 문자열을 하나씩 돌린다.

  • 해당 문자열이 숫자일 때는 점수저장을 위해 string s 에 더해준다.
  • 해당 문자열이 보너스(S, D, T)일 때는 s를 int로 바꾸어 score배열에 넣는다.
    • 그 후 각 보너스에 맞게 점수 연산 후, 그 다음 문자열이 옵션(*,#)일 때, 옵션에 맞는 연산도 해준다.
    • 다트 횟수를 증가시키고(cnt++), 점수를 초기화 해준다. (s="")

그렇게 각 점수를 저장한 score 배열을 더한 값을 return 해준다.

import java.util.*;
class Solution {
    public int solution(String dartResult) {
        int answer = 0;
        char cc[] = dartResult.toCharArray();
        int score [] = {0,0,0};
        int cnt=0; // 다트기회
        String s=""; // 매 기회 점수
        
        for(int i=0; i<cc.length; i++){
            if(Character.isDigit(cc[i]) == true) // 숫자면 다음으로 넘어감
            {               
                s += cc[i];
                System.out.println(s);
            }
            else if (cc[i]=='S'||cc[i]=='D'||cc[i]=='T') { // S,D,T 일 때
                score[cnt] = Integer.parseInt(s);
                if (cc[i]=='D') score[cnt]= score[cnt]*score[cnt];
                if (cc[i]=='T') score[cnt]= score[cnt]*score[cnt]*score[cnt];
                if (i!=cc.length-1){
                    if (cc[i+1]=='*') {
                        if(cnt != 0)
                            score[cnt-1] *=2;
                        score[cnt] *=2;
                    }
                    if (cc[i+1]=='#') score[cnt] *= (-1);      
                }
                cnt++; // 다음 기회로 넘어감
                s=""; // 점수초기화
            }  
        }
        for(int i:score){
            answer += i;
        }
        
        return answer;
    }
}
저작자표시 (새창열림)

'Algorithm & Data Structure > 프로그래머스' 카테고리의 다른 글

[Java] 프로그래머스 : 정수 내림차순으로 배치하기  (0) 2022.02.19
[Java] 프로그래머스 : 신고 결과 받기  (0) 2022.02.18
[Java] 프로그래머스 : 비밀지도  (0) 2022.02.14
[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)  (0) 2022.02.14
[Java] 프로그래머스 : 키패드 누르기  (0) 2022.02.14
    'Algorithm & Data Structure/프로그래머스' 카테고리의 다른 글
    • [Java] 프로그래머스 : 정수 내림차순으로 배치하기
    • [Java] 프로그래머스 : 신고 결과 받기
    • [Java] 프로그래머스 : 비밀지도
    • [Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)
    ygreenb
    ygreenb
    개발공부기록장

    티스토리툴바