본문으로 건너뛰기

12981 - 영어 끝말잇기

정보
  • 문제 보기: 12981 - 영어 끝말잇기
  • 소요 시간: 18분 46초
  • 풀이 언어: java
  • 체감 난이도: 2️⃣
  • 리뷰 횟수: ✅

풀이 키워드

스포주의

해시


풀이 코드

정보
  • 메모리: 96600 KB
  • 시간: 0 ms
import java.util.*;

class Solution {
public int[] solution(int n, String[] words) {
Map<String, Boolean> usedWordMap = new HashMap<>();

int i = 0;
char lastChar = words[0].charAt(0); // 첫번째 검사 무조건 통과
for (; i < words.length; ++i) {
// 복수 단어 검사
if(usedWordMap.containsKey(words[i])) return new int[]{i%n+1, i/n+1};
usedWordMap.put(words[i], true);

// 첫글자 검사
if (lastChar != words[i].charAt(0)) return new int[]{i%n+1, i/n+1};
lastChar = words[i].charAt(words[i].length()-1);
}

return new int[]{0, 0};
}
}

풀이 해설

끝말잇기에서 탈락하는 사람이 몇번째 턴에 탈락하는지 반환하는 문제이다.

IOOB 터지면 귀찮으니 턴은 따로 변수화하지 말고 i로 words 전체를 순회해서 산술 연산으로 턴을 계산하는 쪽이 낫다.


메모

  • 그냥 해시맵 containsKey만 까먹지 않으면 됨