Byeon's NOTE
[프로그래머스 알고리즘] level_2 2018서머코딩 영어 끝말잇기 - java 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/12981
풀이
import java.util.*; class Solution { public int[] solution(int n, String[] words) { int[] answer = new int[2], user = new int[n];
List<String> usedWord = new ArrayList<String>(); String s = words[0];
user[0]++; usedWord.add(s);
for(int i=1;i<words.length;i++){ user[i%n]++; if(usedWord.contains(words[i]) || !(s.charAt(s.length()-1)==words[i].charAt(0))){ answer[0] = (i%n)+1; answer[1] = user[i%n]; break; }else{ s = words[i]; usedWord.add(s); } } return answer; } }
- 이미 사용된 단어를 저장할 usedWord를 List로 생성하고 각각 유저의 차례를 저장할 user 배열을 생성합니다.
- 첫번째 단어는 userdWord에 저장하고 첫번째 유저의 차례 user[0]를 1증가 시킵니다.
- 반복문을 words 배열의 길이만큼 실행시키고 contains()함수를 이용하여 이미 사용했던 단어인지 확인하여 이미 사용한 단어라면 answer[0] 에 유저의 번호, answer[1]에 해당유저가 몇번째 차례였는지 저장한후 반복문을 빠져나옵니다.
- 그리고 charAt()을 이용하여 이전 단어의 마지막 알파벳과 현재 단어의 첫번째 알파벳이 같은지 확인하여 같지 않다면 위와 같은 작업을 합니다.
- 이전 단어의 마지막 알파벳과 현재 단어의 첫번째 알파벳이 같다면 s에 현재 단어를 저장하고 usedWord에 현재 단어를 저장합니다.
'알고리즘 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 알고리즘] level_2 다음 큰 숫자 - java (0) | 2019.03.28 |
---|---|
[프로그래머스 알고리즘] level_2 주식가격 - java (0) | 2019.03.27 |
[프로그래머스 알고리즘] level_2 전화번호 목록 - java (0) | 2019.03.27 |
[프로그래머스 알고리즘] level_2 2018윈터코딩 스킬트리 - java (0) | 2019.03.18 |
[프로그래머스 알고리즘] level_1 시저암호 - java (0) | 2019.03.17 |
Comments