나 개발자 진짜 되냐?

코딩테스트 입문 - 외계어 사전 ( find 사용법 ) 본문

프로그래머스를 풀어보아요!/C++

코딩테스트 입문 - 외계어 사전 ( find 사용법 )

Snow Rabbit 2026. 5. 18. 23:44

 

맨날 이렇게 답지 봐서는..

이래 가지고 코테 문제 풀 수 있겠어!!?!?!?!!!?!?!?!?

 

하지만 내가 몰랐던 거 정리해야 하니까..^-^..

 


 

 

내 계획은..!

dic에서 한 개씩 꺼내서

find? 를 이용해서 찾는 것..!

 

 

초안을 작성해서 지피티한테 보냈다.

왜냐면 find의 함수가 기억이 안 나서.....

 

 

find

find는

어디에서. find(찾을 단어) 

로 써야 한다.

 

나는 지금

find(찾을 단어, 어디에서)로 써놨다.

 

그래서

s.find(spell [i]) == string :: npos

로 써야 한다.

 

그리고 이렇게 yes or no 일 땐 bool값을 써보는 것도 괜찮다고 했다.

 

is_match = true로 해놓다.

 

그다음이 어렵다

어떻게 하라는 건지...

 

인지 씨에게 물었다.

 

1. spell의 있는 모든 단어를 사용해야 하니,

dic와 spell길이는 같아야 한다.

즉 dic의 길이가 spell길이랑 다르면 검사할 이유가 없다.

 

2. 아까 방식대로 s.find(spell [i]) == ::string::npos를 사용해서

false 해주고 하나라도 틀리면 모두 들어가는 게 아니니까 break 해준다.

 

3.

for문으로 글자수 다 돌아봤지만 false가 안 됐다면

그 녀석은 맞는 식이니

바로 탈출 return 1;

 

 

 

어렵다... 어려워..!!

이미 위에서 is_match로 1을 내보내기 때문에

맨 마지막줄까지 왔다는 건 무조건 2여서

 return 2해도 된다고 한다.

 

 

갑자기

보너스라고 방법을 하나 더 던져줬다.

 

 

어차피! 글자수는 같고

찾기만 하면 되니까.

 

spell을 다 string 빈통에 합치고

sort 해준다.

 

그리고 dic도 글자 길이가 같다면

sort 해주고

빈 통에 넣어놨던 spell값과 dic값이 같으면 1

다 돌았는데도 없으면 2를 내면 끝..! 매우 간단!

 

 

이렇게 생각하니 참 쉽다.


 

 

 

굉장히 짠 점수...

 

역시 패턴이라는 게 중요한 거 같다.

 

이걸파악하는게 제일 힘든 거 같기도 하고..

 

아니 가끔 푸르트 포스 때문에

if / else 많으면 머리 터질 거 같고.. 틀릴까 봐 걱정되고..

그냥 참.. 이게..

어렵다 어려워.