jjwdi0   4달 전

아래처럼 코드를 짜보았습니다.


먼저, 입력받을 때, map<string, string>에다가 이름이랑 인덱스를 각각 키 값으로 설정해서 넣었고요.

질의에 응답할 때는 그냥 string으로 받아서 처리했습니다.


cin이랑 cout에서 시간 초과가 나는 것 같은데.. 어떻게 해결할 수 있을까요?

sksdong1   4달 전

scanf printf 쓰면 되지 않나요

jjwdi0   4달 전

그러면 string 입력받는게 불가능하지 않나요??

제가 STL string은 잘 몰라서ㅠㅠ scanf 쓰고 싶어도 방법을 모르겠습니다...

kks227   4달 전

전 cin cout으로 풀었습니다.

이름과 번호가 하나의 맵에 들어가서 탐색 시간이 오래 걸리는 게 원인이 아닐까 합니다.

번호를 이름으로 매핑해주는 배열과, 이름을 번호로 매핑해주는 맵을 따로 확보하시고 질문이 정수인지 이름인지 확인하여 맞는 결과를 찾아 출력하시면 될 것 같습니다.

jjwdi0   4달 전

코드를 이렇게 바꾸어도 시간 초과가 나네요ㅠㅠ

혹시 부족한 점이 있나요??

endl은 시간이 제법 걸리는 방식으로 개행을 합니다. '\n'으로 출력해보심이 어떨까요

jjwdi0   4달 전

최종 제출이 다음과 같습니다.

그래도 시간 초과가 뜨더군요... 좋은 방법이 없을까요

kks227   4달 전

한번 m2를 string형 배열로 바꿔보시는게 어떤가요?

번호의 최댓값이 문제에 있을테니...

jjwdi0   4달 전

이렇게해도 똑같네요...ㅠ

kks227   4달 전

으음... 질문에 답을 하는 시간이, 10만 개 질문이 전부 이름으로 들어오고 모든 포켓몬 이름이 20글자라면

20*100000*log2100000 = 약 3300만 번의 연산으로 처리하게 될텐데... 이게 2초로 부족하지는 않을텐데요. 아니면 복잡한 연산이라 아슬아슬하게 걸린다던가...

혹시라도 도움이 될지도 몰라서 알려드리자면, 저의 경우는 질문을 받을 때 cin >> temp로 바로 문자열로 받지 않고, 먼저 cin.peek()이란 함수로 당장 받을 문자가 숫자인지 알파벳인지 입력을 받지 않고 체크한 후 숫자면 정수형 변수로, 아니면 문자열 변수로 받아서 처리를 했습니다.

jjwdi0   4달 전

감사합니다ㅠㅠ 드디어 풀었네요.. scanf를 통해 문자열로 받아서 string으로 변환했네요...

도움주신 kks227님 portableangel님 sksdong1님 정말 감사합니다!


댓글을 작성하려면 로그인해야 합니다.