프로그래머스 - 영어 끝말잇기
2022. 9. 13. 21:20ㆍ코딩 공부 연습
반응형
영어 끝말잇기다. 끝나는 조건으로 틀린 단어를 댄 경우, 이미 한 경우를 댄 경우만 신경 써주면 된다.
map 에 지금까지 사용한 단어들을 다 저장하면서 새로 받을 때마다 find 에서 걸리는지 체크했다.
두 종료조건 중 어느 하나에 걸려도 그때의 인덱스를 갖고 종료한다.
이제 몇번째 단어에서 끝났는지를 통해 누가 걸린거고, 몇번 턴만에 걸렸는지를 구해야했는데, 여기서 멍청한 탓에 매우 멍청하게 풀었다.
ㅜㅜ 남들은 굉장히 쉽게했더라ㅋㅋ
#include <string>
#include <vector>
#include <iostream>
#include <set>
using namespace std;
vector<int> solution(int n, vector<string> words) {
vector<int> answer;
set <string> wordlist;
// 처음부터 시작해서 그냥 계속 읽어가면서 다 map 에 넣는다.
//map find에서 발견이된 순간 그 친구가 탈락이고, 그 때 n으로 나눠주고, 몇번쨰 사람인지 구하는건 수학!
int end_flag = 0; // 전부 다 돌았는데도 endflag 가 0이면 {0,0} 리턴.
int end_spot = 0;
wordlist.insert(words[0]);
for(int i = 1; i < words.size(); i++)
{
int prev_wordlen = words[i-1].size();
if (words[i][0] != words[i-1][prev_wordlen-1]) //이어지는 말로 안함.
{
end_spot = i;
end_flag = 1;
break;
}
if(wordlist.find(words[i]) != wordlist.end()) // 사전내에 있을 떄,
{
end_flag = 1;
end_spot = i;
break;
}
else
wordlist.insert(words[i]);
}
end_spot++;
if(end_flag == 0)
{
answer.push_back(0); answer.push_back(0);
return answer;
}
int outman = end_spot%n;
if(outman == 0) outman = n;
int outcount = (end_spot) / n;
if(end_spot % n >= outman)
outcount++;
answer.push_back(outman); answer.push_back(outcount);
return answer;
}
'코딩 공부 연습' 카테고리의 다른 글
프로그래머스 - JadenCase 문자열 만들기 (0) | 2022.09.15 |
---|---|
프로그래머스 - 최댓값과 최솟값 (0) | 2022.09.15 |
프로그래머스 - 주차 요금 계산 (1) | 2022.09.13 |
프로그래머스 - k진수에서 소수 개수 구하기! (0) | 2022.09.08 |
백준 바킹독 재귀 모음 - 1629 곱셈, (0) | 2022.09.07 |