728x90
728x90
문제링크
https://programmers.co.kr/learn/courses/30/lessons/12981
문제풀이
👨🏻💻 핵심 스킬 👨🏻💻
Set
1. 문제 이해
n명의 사람이 영어로 끝말잇기를 진행한다. 끝말잇기의 내용은 words라는 String 배열로 받는다. 끝말잇기는 1번부터 n번까지의 사람이 차례대로 말을 하며 n번 사람이 말하면 다시 1번 사람이 말을 하게 된다. 앞에서 언급한 단어와 끝말이 이어지지 않거나, 중복된 단어를 사용한 경우 문제를 틀리게된다. 이 때 실수를 한 사람과 몇번째 차례에서 틀렸는지를 확인하는 문제이다.
2. 접근방법
중복된 단어를 사용하는지 여부는 Set을 확인하여 해결하였다.
사용한 단어를 Set에 넣어주어 추후에 단어가 나오는지를 확인하여 문제를 해결하였다.
구현코드
package pgm_12981;
import java.util.HashSet;
import java.util.Set;
public class Solution {
public int[] solution(int n, String[] words) {
Set<String> sayLog = new HashSet<>();
int cnt = 1;
int person = 0;
String prevWord = String.valueOf(words[0].charAt(0));
for(String word : words){
if(sayLog.contains(word) || prevWord.charAt(prevWord.length()-1) != word.charAt(0))
return new int[]{person+1,cnt};
prevWord = word;
sayLog.add(word);
if(person % n == n-1)
cnt++;
person = (person + 1)%n;
}
return new int[]{0,0};
}
}
잘못된 지식이나 궁금한 내용이 있을 경우 편하게 댓글 남겨주시면 감사하겠습니다 :)
728x90
728x90
'CodingTest > Programmers' 카테고리의 다른 글
[PGM] 구명보트 (java) (0) | 2022.03.29 |
---|---|
[PGM] 주식 가격 (Java) (0) | 2022.03.27 |
[PGM_77885] 2개 이하로 다른 비트 (Java) (0) | 2022.03.16 |
[PGM_42883] 큰 수 만들기 (Java) (0) | 2022.03.14 |
[PGM_42583] 다리를 지나가는 트럭 (0) | 2022.03.13 |