문제
출처 : www.acmicpc.net/problem/18679
입력 받은 문자를 미니언 언어로 바꿔서 출력하면된다.
예를들어,
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
'알고리즘 (2020 : 08 : 10 ~ ) > 구현, 시뮬' 카테고리의 다른 글
[백준 / BOJ] 11067 모노톤 길 (0) | 2020.09.07 |
---|---|
[백준 / BOJ] 14464 소가 길을 건너간 이유 4 (0) | 2020.08.29 |
[백준 / BOJ] 14746 Closest Pair (0) | 2020.08.16 |
[백준 / BOJ] 5397 키로거 [이중 연결 리스트] (0) | 2020.08.13 |
[백준 / BOJ] 3190 뱀 (0) | 2020.08.10 |