반응형
11. 영어 끝말잇기
import java.util.*;
class Solution {
public int[] solution(int n, String[] words) {
int[] answer = new int[2];
Map<String, Integer> map = new HashMap<>();
for(int i=0; i<words.length; i++){
if(i != 0){
String str = words[i];
String before = words[i-1];
char first = str.charAt(0);
char last = before.charAt(before.length()-1);
if(map.containsKey(str) || first != last){
answer[0] = (i % n) + 1;
answer[1] = (i / n) + 1;
return answer;
}
}
map.put(words[i], i);
}
return answer;
}
}
<작성한 코드>
Map형식의 map변수 하나를 만들었다. 그 뒤 for문을 사용해서 words의 단어들을 확인했고 i가 0이 아닐 때는 str에는 현재 단어를 대입, before에는 이전의 단어를 대입해 줬다. 그 뒤 first에는 현재 단어의 첫 글자를 넣어주고, last에는 이전글자의 마지막번째 글자를 넣어줬다. 그 뒤 if문을 사용해서 map에 str를 키값으로 가지는 값이 있거나 first, last가 다른 값일시 answer에 각각 i% n+1, i/n+1을 해서 번호와 차례를 넣어줬다. 만약 여기에 걸리지 않는다면 map에 words [i]를 키로가 지는 값을 넣어주고 반복했다.
12. 점프와 순간이동
import java.util.*;
public class Solution {
public int solution(int n) {
int ans = 0;
while(n > 0){
if(n%2 == 0){
n/=2;
} else{
n--;
ans++;
}
}
return ans;
}
}
<작성한 코드>
while의 실행조건을 n이 0보다 클때로 걸었다. 그 뒤 내부에서는 n이 2로 나눠 떨어질 수 있으면 n을 2로 나눈다. 만약 홀수라면 n에서 1일 빼주고 ans에는 1을 더해서 카운트를 올려준다. n이 0보다 작아질 때까지 반복한 뒤 ans를 반환해 주면 된다.
반응형
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
남건욱's 공부기록