본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )/구현, 시뮬

[백준 / BOJ] 18679 Banana

문제

출처 : www.acmicpc.net/problem/18679

 

18679번: Banana

The first line of input will contain a single integer N, the number of words in the dictionary (1 ≤ N ≤ 100). The following N lines will each contain a sentence of the format x = y where x is an English word and y is a Minionese word. The next line wil

www.acmicpc.net

입력 받은 문자를 미니언 언어로 바꿔서 출력하면된다.

예를들어,

I love banana -> mo amo banana

입력에서 각 문자가 미니언 언어로 무엇인지 나오기 때문에 맞춰서 출력하면된다.

 

이 문제가 포함된 icpc 셋중 가장 쉬운 문제인것같다 출석체크용..?

 

풀이

딱히 풀이랄것도 없지만, 시간을 줄이기위해 아스키 코드값을 사용했다.

 

문자열의 최대길이는 20이므로 아스키 코드의 최댓값은 (int)z * 20 -> 2440이다. 

2500크기의 string배열을 선언하고, 문자열에서 각 문자의 아스키코드값을 전부 더한값에 미니언 문자를 저장해줬다.

 

예를들어, abc = amam 같은 입력이 주어지면,

str[294] = amam; (abc의 아스키 코드값은 97 + 98 + 99 = 294이다.)

이런식으로, 배열을 만들어주고 마지막에 참조해주면된다.

 

*

답은 맞았지만, 반례가 존재한다.

1. 문자의 구성은 같지만 순서가 다른경우 (ex. break, brake)

2. 문자의 구성은 다르지만 아스키 코드값이 같은경우 

 

위와 같은경우에 아스키 코드값으로 저장해주면 전혀 다른 답이 출력될것이다...

 

2

break = momo

brake = mama

1

2

break brake

 

답 : momo mama

 

출력 : mama mama

 

이유 : break 와 brake의 아스키 코드값은 같아서 한곳에 저장된다. break = momo가 brake = mama로 덮여쓰워지면서 오답이 출력된다...

 

+12.11 데이터가 추가되서 더이상 위 방법으론 맞았습니다를 받을수없다

 

map을 이용해서 key = value 형태로 저장해주고 입력받을때마다 저장된 key에 해당하는 value를 출력하면 된다

 

소스코드

https://github.com/devxb/JJUNalgo/blob/master/18679%20Banana/main.cpp

 

devxb/JJUNalgo

백준 알고리즘 소스코드🙃. Contribute to devxb/JJUNalgo development by creating an account on GitHub.

github.com