본문 바로가기

코딩테스트/programmers

영어 끝말잇기

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

탈락하는 조건은 2가지

1. 중복된 단어를 말하거나,

2. 앞사람이 말한 단어의 마지막 문자로 시작하는 문자가 아니거나

이므로

charAt을 이용한 문자 비교 + Set을 이용한 중복 체크를 해야한다.

 

import java.util.*;

class Solution {
    public int[] solution(int n, String[] words) {
        
        Set<String> peek = new HashSet();
        peek.add(words[0]);
        
        int count = 0;
        
        for (int i = 1; i < words.length; i++) {
            
            String word = words[i];
            String prev = words[i-1];
            
            if (prev.charAt(prev.length()-1) != word.charAt(0) || !peek.add(word)) {
                count = i;
                break;
            }
            
        }
        
        if (count == 0) return new int[] {0, 0};
        
        return new int[] { count % n + 1, (int) Math.ceil(count / n) + 1};
        
    }
}

 

n이 3이고 9번째 단어(i == 8)에서 틀린 경우

 

8을 3으로 나눈 나머지가 2이며, 이는 사람의 순서가 된다. 그런데 프로그램상 계산은 0부터 시작했으므로, +1을 더해줘야 함.

8을 3으로 나눈 몫은 2이며 이는 회차가 된다. 역시나 계산상 0부터 시작했으므로, +1을 더해줘야 함.

 

'코딩테스트 > programmers' 카테고리의 다른 글

전력망을 둘로 나누기  (0) 2023.09.19
삼각 달팽이  (0) 2023.09.19
카펫  (0) 2023.09.18
짝지어 제거하기  (0) 2023.09.18
피보나치 수  (0) 2023.09.16