새소식

반응형
알고리즘/c++

[프로그래머스] level2 영어 끝말잇기 - c++

  • -
728x90
반응형

하핫

돌아오는 월욜(내일)부터 하루에 세문제씩 풀기로 계획세웠는데

ㅎ 할수있겠지 ㅎ

한문제 풀고 나면 그냥 집가고싶어짐 ㅎ

 

무튼 ..

 

정답 코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int n, vector<string> words) {
    vector<int> answer;
    string before = words[0];

    for(int i=1;i<words.size();i++){
        if(words[i][0]!=before[before.length()-1]){
            answer.push_back((i+1)%n==0?+n:(i+1)%n);
            answer.push_back(i/n+1);
            return answer;
        }else{
            for(int j=0;j<i;j++){
                if(!words[j].compare(words[i])){
                    answer.push_back((i+1)%n==0?n:(i+1)%n);
                    answer.push_back(i/n+1);
                    return answer;
                }
            }
        }
        before=words[i];
    }
    
    if(answer.empty()){
        answer.assign(2, 0);
    }

    return answer;
}

 

회고?

주절주절

다른 사람들 풀이 보니까 map이나 set같은 자료구조 활용하는게 best처럼 보이네유..

반성..

역시 자료구조 기초가 흔들거리다보니 ㅎ 코드가 복잡해지는군 ..

 

사실 before같은거 필요없고 words[i-1] 이런식으로 가도 되는데

어제 문제가 생각나서 의식의 흐름대로 걍 before로 일단 대입한듯 ㅋㅎ

 

생각하며 풀자!

 

아 글고 첨엔 map쓸 생각을 못하고

걍 vector 정렬해서 idx로 찾을까? 하다가.. vector는 탐색이 넘 복잡하다는걸 깨닫고.. 걍 이중for문으로 튀튀 ㅎ

 

가져갈것

  • string.compare(string)
    • 제발!!!! c++은 문자열 비교할때 equals 아니고 compare이다!! 맨날 equals로 해놓고 에러나면 당황함ㅋ
  • strcmp 함수도 있긴함 (char*에 대해 사용)
  • find() 함수
    • vector나 배열에 요소 있는지 확인하는
    • #include <algorithm>
      • find(v.begin(), v.end(), 특정값) -> 발견시 리턴값이 iter, 미발견시 v.end()반환
      • find(arr, arr+n, 특정값)

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.