반응형
사이트명 : 프로그래머스(Programmers)
문제명 : 영어 끝말잇기
언어 : 자바(Java)
이 끝말잇기에서 n이 사람 수인 만큼
사람들이 모두 말하면 차례가 1 올라가는 거고
끝말잇기에서 걸리는 조건은
1. 새로 말하는 단어의 첫 글자가 이전 단어의 마지막 글자와 다르거나
2. 이미 말한 단어를 또 말하는 경우
이 두가지만 확인해주면 되는데
여기서 아무도 걸리지 않았다면 0,0 을 반환하면 된다
내 풀이방법은 다음과 같다
일단 for 문을 돌리면서 두번째 차례부터 이전 단어와 지금 단어의 마지막 글자, 첫 글자를 비교해 주고
만약 다르다면 사람과 횟수를 넣어서 바로 break; 시킨다
다음으로 말하려는 단어는 list.contain을 통해 식별 가능한데
여기서 중복된 단어를 말하면 바로 사람과 횟수를 넣어서 break; 시킨다
여기까지 안 걸렸다면 list에 단어를 넣어주고
사람 수가 마지막까지 돌아오면 다시 처음으로 돌려주면서
차례(turn)를 올려주면 된다
프로그래머스에 바로 적용 가능한 코드는 아래와 같다
import java.util.LinkedList;
class Solution {
public int[] solution(int n, String[] words) {
int[] answer = new int[2];
int people = 0;
int turn = 1;
LinkedList<String> list = new LinkedList<>();
for(int i = 0; i<words.length; i++) {
people++; // people은 0이 없음
if(i>0) { // 앞, 뒷 단어 체크
if(list.get(i-1).charAt(list.get(i-1).length() - 1) != words[i].charAt(0)) {
answer[0] = people;
answer[1] = turn;
break;
}
}
if(list.contains(words[i])) { // 중복 체크
answer[0] = people;
answer[1] = turn;
break;
}
list.add(words[i]);
if(people == n) { // people 처음부터
people = 0;
turn++;
}
}
return answer;
}
}
반응형
'Language > 알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 JadenCase 문자열 만들기(Java) (0) | 2019.09.19 |
---|---|
프로그래머스 최댓값과 최솟값(Java) (0) | 2019.09.19 |
프로그래머스 위장(Java) (0) | 2019.09.18 |
프로그래머스 전화번호 목록(Java) (0) | 2019.09.17 |
프로그래머스 숫자의 표현(Java) (0) | 2019.09.17 |
댓글