문제 

https://algospot.com/judge/problem/read/XHAENEUNG

위 사이트를 들어가서 확인


문자로 입력받은 숫자들의 연산을 하여, 결과값으로 출력해주는 문제였다.


주의할점 

연산을 하였을 때, 결과값이 10을 넘거나 0보다 작을 시 정답이 아닌걸로 간주한다.


문제가 비교적 쉬운 문제라, 위의 주의할점만 제대로 지키면 해결할 수 있을거라 생각합니다. 


푼방법 

문자를 숫자값으로 변환하여, 연산을 처리한다.

처리한 결과값을 다시 문자열값으로 변환하여, 제공된 결과값과 비교한다. 

비교 시 two * five = svene 이런식으로 알파벳 개수가 같을 시에도 정답으로 인정해줘야한다.

한 문자씩 비교하여, 정답으로 제공된 결과값에서 빼주는 식으로 처리하였다. 


코드 

package com.yjh.algol;

import java.util.Scanner;

public class XHAENEUNG {

static String num[] = { "zero", "one", "two", "three", "four", "five", "six", "seven","eight","nine", "ten" };

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

int n = scanner.nextInt();

int fNum = 0;

int lNum = 0;

String oper ;

String sresult;

int result = -1;

for ( int i = 0 ; i < n ; i++ ) {

// 숫자들의 입력을 받아올 때, 위에 num[]에 저장 된 문자열과 비교하여 숫자값으로 바꿔준다.

fNum = findNum( scanner.next() );

oper = scanner.next();

lNum = findNum( scanner.next() );

scanner.next();

sresult = scanner.next();


// 받은 두 숫자값을 이용, 결과값을 출력해준다.

if( oper.equals("+")) {

result = fNum + lNum;

} else if ( oper.equals("-") ) {

result = fNum - lNum;

} else if ( oper.equals("*") ) {

result = fNum * lNum;

}

// 예외 처리) 숫자가 10보다 크거나, 0보다 작음 잘 못된 값으로 간주한다. 

if( result >  10 || result < 0 ) {

System.out.println("No");

continue;

}


                        // 연산을 한 숫자 문자열 값과, 결과값으로 제공된 값을 비교한다.

                        // 길이가 같다면 한 글자씩 없애준다.

                        // 결과로서 모든 문자열이 제거 됐다면 성공, 아닐 시 실패 

int length = sresult.length();

int nlength = num[result].length();

String temp;

boolean tfalse = true;

if( length != nlength ) {

tfalse = false;

}else { 

temp = num[result];

for (int j = 0 ; j < length ; j++) {

temp = temp.replaceFirst(sresult.charAt(j)+"", "");

}

if(temp.length() > 0) {

tfalse = false;

}

}

if(tfalse) {

System.out.println("Yes");

} else {

System.out.println("No");

}

}

}

static int findNum(String number) { 

int index = -1;

for( int i =0 ; i < num.length ; i++) {

if( number.equals(num[i])) {

index = i;

break;

}

}

return index;

}

}


 











'algolism' 카테고리의 다른 글

[알골스팟] PACKING 문제  (0) 2018.03.03
[카카오예선문제]캠핑풀이설명  (0) 2018.02.24

+ Recent posts