tech.kakao.com/2017/11/14/kakao-blind-recruitment-round-3/
코딩테스트 대비반 수업에서 받은 첫 숙제.
/******************************************************************************
1. 사전 배열 영어대문자로 초기화 -> vector<string> dic
2. 입력받은 문자 중 사전에서 검색할 단어는 temp에 저장
3. temp가 사전에서 검색되면,
3-1.검색된 index 저장해놓고
3-2.temp도 다음단어 붙여서 갱신
4. temp가 사전에서 검색되지 않으면,
4-1.3번에서 저장해놓은 index 출력하고
4-2.검색되지 않은 temp 사전에 추가
4-3.temp 다음 단어로 갱신
5. 색인번호 배열 출력
searchDict 함수: w(현재입력단어)를 사전에서 검색. 인덱스 번호 리턴
*******************************************************************************/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 사전 인덱스 초기화
vector<string> dic = {"","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
// 사전 인덱스 번호 검색
int searchDict(string w){
for(int i=0; i<dic.size(); i++){
if(w == dic[i]){
return i;
}
}
return -1;
}
int main()
{
vector<int>answer;
int index, i=0;
string temp="";
string msg;
cout << "msg: ";
cin >> msg;
temp = msg[0];
while(i < msg.size()){
if(searchDict(temp) > -1){ /////사전에서 찾은 경우/////
index = searchDict(temp);
if(i == msg.size()-1){ // 맨 마지막 단어
answer.push_back(index);
}
i++;
temp += msg[i]; //다음 단어 temp입력에 추가
}
else { /////사전에서 못찾은 경우/////
answer.push_back(index); //색인번호 출력
dic.push_back(temp); // 사전에 추가
temp = msg[i]; // 다음 단어 재설정
}
}
cout << "answer: ";
for(int i=0; i<answer.size(); i++)
{ cout << answer[i] << " "; }
return 0;
}
주석 처리가 많은 코드는 그다지 좋은 코드가 아니라고 배웠지만, 나중에 내가 까먹을 것을 대비해서 그냥 내버려뒀다.
하다가 막히는 부분이 있어서 찾다가... 이분의 글을 많이 참조했다.
자꾸 오류값이 나오는 이유는 내가 while문이 아니라 for문을 사용해서였다.
for문을 사용하면 if/else 나눠서 i++을 하지 못하니까.
이 알고리즘의 가장 핵심적인 부분이라 많이 민망했다.
앞으로 코드를 짤 때 상황별로 정확히 나눠서 생각하는 습관을 길러야겠다.
피드백) map
함수, find
함수 이용하는 법도 생각할 것!!!!
직접 구현보다 기본적으로 지원되는 함수를 이용하는게 더 효율적이고 가독성도 좋음!!!!!
STL을 익히자!!!
코테 준비를 처음으로 시작하면서 가장 많이 느끼는 점은 내가 너무나도 부족하다는 사실인 것 같다.
좀 처절할 정도로... 기본기의 부족을 느낀다. 구현에서 너무 막히니까.
아무래도 c++문법 공부와 함께 병행해가면서 공부해야 할 것 같다.
생각보다 c언어를 많이 까먹은 상태에서 시작하려니까 벅찬 느낌이 든다.
강사님께서 난이도 하라고, 쉽다고 하시는데도 애먹는 나를 보면 자괴감이 들기도 한다.
'지금까지 나는 뭘 한거지?'
잠깐 이런 생각도 들기는 하지만, 과거를 후회해봐야 소용없다. 시간만 낭비할 뿐이지.
그 시간에 한 문제라도 더 들여다보고 문법 개념이라도 한 번 더 보는게 낫다.
꾸준히 하다보면 점점 나아질 것이라고 믿는다!
이 세상에서 처음부터 쉬운게 어디있나. 너무 쉬우면 오히려 재미없다.
점점 익숙해지고 감이 잡히는 시기가 올 것이다.
나 자신, 화이팅!
'Problem Solving' 카테고리의 다른 글
[JS 알고리즘] Toy 2 - fibonacci ( O(n) ) (0) | 2022.05.12 |
---|---|
[JS 알고리즘] Toy 1 - orderOfPresentation (0) | 2022.05.12 |
[JS 알고리즘] Toy 15 - primePassword (0) | 2022.05.12 |
[JS 알고리즘] Toy 18 - getItemFromTwoSortedArrays (kth element of two sorted arrays) (0) | 2022.05.11 |
[JS 알고리즘] Toy 22 - rotateMatrix (0) | 2022.05.10 |