https://school.programmers.co.kr/learn/courses/30/lessons/12981
해당 조건을 보면,
return 처리의
첫 번째 조건은 중복된 경우일 때
두 번째 조건은 마지막 단어의 끝 알파벳과 현재 단어의 시작 알파벳이 다른 것일 때
따라서 return 처리의 if문 안에는 두 가지 조건을 걸러낼 수 있어야 한다.
중복된 경우가 조건이라면
map이 적합하다.
map은 중복을 허용하지 않기 때문이다.
그럼 단순 반복문을 통해 해당 조건에서 return 해야할 값을 구해보자.
틀린 사람이 몇 번째 사람인지는
for문의 (i % n) + 1 을 통해 구할 수 있다.
틀린 사람이 몇 번째 차례인지는
for문의 (i / n) + 1 을 통해 구할 수 있다.
vector<int> solution(int n, vector<string> words) {
map <string, int> m;
m[words[0]]++;
for (int i = 1; i < words.size(); i++) {
if (m[words[i]] || (words[i].front() != words[i - 1].back()))
{
int human = (i % n) +1;
int cnt = (i / n) + 1;
return { human, cnt };
}
m[words[i]]++;
}
return {0,0};
}
'콘솔창 & 윈도우창 > 코딩 테스트' 카테고리의 다른 글
프로그래머스 LV.2 짝지어 제거 (0) | 2024.11.12 |
---|---|
프로그래머스 LV.2 의상 (2) | 2024.11.11 |
프로그래머스 LV.2 소수 찾기 (0) | 2024.11.11 |
프로그래머스 LV.2 전화번호 목록 (0) | 2024.11.11 |
프로그래머스 LV.1 완주하지 못한 선수 (0) | 2024.11.10 |