java를 처음 배우고 기초적인 구현 문제들을 JAVA로 구현해 보려고 하는데... 이 문제에서 틀릴 수 있는 부분이 어디가 있는지가 궁금합니다.
이미 처리를 한 내용은 이렇습니다.
0미만, 10이상 결과에 대해 무조건 false 반환
각 문자가 나온 갯수를 저장하는 배열을 만들고 (초기화한 뒤) 갯수를 저장함
importjava.util.Scanner;publicclassMain{publicstaticScannerget=newScanner(System.in);publicstaticvoidmain(Stringargs[]){Mainwork=newMain();work.start();}publicvoidstart(){intcnum=get.nextInt();// case 갯수 입력get.nextLine();while(cnum--!=0)StartSolve();get.close();}publicvoidStartSolve(){Stringinput=get.nextLine();String[]split=input.split(" ");// s[0] = argument[1], s[1] = operator, s[2] = argument[2], s[3] = "=", s[4] = result 로 분리된다int[]arg={0,0};intres=0;for(inti=0;i<2;i++){// i = 0 : arg[0] <<< split[0]switch(split[2*i]){// i = 1 : arg[1] <<< split[2]case"zero":arg[i]=0;break;case"one":arg[i]=1;break;case"two":arg[i]=2;break;case"three":arg[i]=3;break;case"four":arg[i]=4;break;case"five":arg[i]=5;break;case"six":arg[i]=6;break;case"seven":arg[i]=7;break;case"eight":arg[i]=8;break;case"nine":arg[i]=9;break;case"ten":arg[i]=10;break;}}switch(split[1]){// 연산자 : split[1]case"+":res=arg[0]+arg[1];break;case"-":res=arg[0]-arg[1];break;case"*":res=arg[0]*arg[1];break;}System.out.println(Solve(res,split[4])?"Yes":"No");// 결과 문자열 : split[4]}publicbooleanSolve(intres,Stringhand){if(res>10||res<0)returnfalse;// 도출한 정답이 범위 밖이면 바로 리턴int[]chance=newint[26];// 각 글자가 나오는 횟수를 저장할 배열을 하나 만든다.Stringanswer;switch(res){case0:answer="zero";break;case1:answer="one";break;case2:answer="two";break;case3:answer="three";break;case4:answer="four";break;case5:answer="five";break;case6:answer="six";break;case7:answer="seven";break;case8:answer="eight";break;case9:answer="nine";break;case10:answer="ten";break;default:answer="";break;}for(inti=0;i<26;i++)chance[i]=0;// hand 문자열의 각 글자에 대해서 그 문자의 갯수를 저장하는 배열의 원소를 1 증가시킨다.for(inti=0;i<hand.length();i++)if(hand.charAt(i)>=98&&hand.charAt(i)<=113)chance[hand.charAt(i)-98]++;// answer 문자열에 대해서는 1씩 감소시킨다. (answer 문자열은 "알파벳 소문자에 포함될 경우" 처리를 하지 않음)for(inti=0;i<answer.length();i++)chance[answer.charAt(i)-98]--;// 두 개의 문자열에 나오는 문자 셋들이 같다면 모든 문자에 대해서 배열의 원소가 0이 나올 것이다for(inti=0;i<26;i++)if(chance[i]!=0)returnfalse;returntrue;}}
jun6873
java를 처음 배우고 기초적인 구현 문제들을 JAVA로 구현해 보려고 하는데... 이 문제에서 틀릴 수 있는 부분이 어디가 있는지가 궁금합니다.
이미 처리를 한 내용은 이렇습니다.
9년 전