-
[프로그래머스/JAVA] 다트 게임@떤떤/#Study 2020. 4. 16. 16:45
package practice; import java.util.Random; public class DartGame { // 0~10의 정수와 문자 S,D,T,*,#로 구성된 문자열이 입력될 시 총점수를 반환하는 함수 // 자바에서 쓰는 제곱함수 Math.pow(밑, 지수); public int checkScore(String[] result, String field) { int score = 0; String tmp=""; for (int i = 0; i < result.length; i++) { if (i - 2 >= 0) { // 점수가 10점인지 확인 if ((result[i - 2].equals("S") == false) && (result[i - 2].equals("D") == false) && (result[i - 2].equals("T") == false) && (result[i - 2].equals("*") == false) && (result[i - 2].equals("#") == false)) { tmp = result[i - 2] + result[i - 1]; score = (Integer.valueOf(tmp)); System.out.println(score); } else { score = (Integer.valueOf(result[i - 1])); } } else if (i == 1) { score = (Integer.valueOf(result[0])); } System.out.print(field+"의 위치 : " + i); System.out.println(" , score : " + score); } return score; } public int solution(String dartResult) { int answer = 0; int s = 1, d = 2, t = 3; String[] result = dartResult.split(""); // 배열에 한글자씩 저장하기 int score = 0; String tmp = ""; for (int i = 0; i < result.length; i++) { if (result[i].equals("S")) { if (i - 2 >= 0) { // 점수가 10점인지 확인 if ((result[i - 2].equals("S") == false) && (result[i - 2].equals("D") == false) && (result[i - 2].equals("T") == false) && (result[i - 2].equals("*") == false) && (result[i - 2].equals("#") == false)) { tmp = result[i - 2] + result[i - 1]; score = (Integer.valueOf(tmp)); System.out.println(score); } else { score = (Integer.valueOf(result[i - 1])); } } else if (i == 1) { score = (Integer.valueOf(result[0])); } System.out.print("S의 위치 : " + i); System.out.println(" , score : " + score); answer += Math.pow(score, s); // 제곱함수 } else if (result[i].equals("D")) { if (i - 2 >= 0) { // 점수가 10점인지 확인 if ((result[i - 2].equals("S") == false) && (result[i - 2].equals("D") == false) && (result[i - 2].equals("T") == false) && (result[i - 2].equals("*") == false) && (result[i - 2].equals("#") == false)) { tmp = result[i - 2] + result[i - 1]; score = (Integer.valueOf(tmp)); System.out.println(score); } else { score = (Integer.valueOf(result[i - 1])); } } else if (i == 1) { score = (Integer.valueOf(result[0])); } System.out.print("D의 위치 : " + i); System.out.println(" , score : " + score); answer += Math.pow(score, d); // 제곱함수 } else if (result[i].equals("T")) { if (i - 2 >= 0) { // 점수가 10점인지 확인 if ((result[i - 2].equals("S") == false) && (result[i - 2].equals("D") == false) && (result[i - 2].equals("T") == false) && (result[i - 2].equals("*") == false) && (result[i - 2].equals("#") == false)) { tmp = result[i - 2] + result[i - 1]; score = (Integer.valueOf(tmp)); System.out.println(score); } else { score = (Integer.valueOf(result[i - 1])); } } else if (i == 1) { score = (Integer.valueOf(result[0])); } System.out.print("T의 위치 : " + i); System.out.println(" , score : " + score); answer += Math.pow(score, t); // 제곱함수 } } return answer; } public String playGame() { StringBuilder sb = new StringBuilder(); // 점수와 문자를 받을 임시 저장소 Random random = new Random(); int round = 3; // 총 3회 int score = 0; int option = 0; // 아차상,스타상 랜덤으로 뽑아낼 정수 String dartResult = ""; for (int i = 0; i < round; i++) { score = random.nextInt(10); sb.append((String.valueOf(score))); if (score >= 0 && score <= 3) { // 0~3까지 Single(S) sb.append("S"); } else if (score >= 4 && score <= 7) { // 4~7까지 Double(D) sb.append("D"); } else if (score >= 8 && score <= 10) { // 8~10까지 Triple(T) sb.append("T"); } option = random.nextInt(3); // 0:아차상(#), 1:스타상(*), 2:아무것도없음 if (option == 0) { sb.append("#"); } else if (option == 1) { sb.append("*"); } else { } } dartResult = sb.toString(); return dartResult; } public static void main(String[] args) { DartGame dg = new DartGame(); String dartResult = ""; int answer = 0; System.out.println("☆★☆★Game Start★☆★☆"); dartResult = dg.playGame(); System.out.println("Dart Result = " + dartResult); answer = dg.solution(dartResult); System.out.println("Answer = " + answer); } }
아직 옵션 추가 안함
코드 최대한 간결하게 하기
★객체화
나만 문제 이해못하고 진지하게 문자열받는 함수까지 만들었다..
어쩐지 다른 사람들 코드 짧더라..
'@떤떤 > #Study' 카테고리의 다른 글
[프로그래머스] 자바로 배우는 자료구조 후기 (1) 2020.04.06