![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cUuKBa/btq6pWLNeXX/CSAovF4Xl4jzky9eQiMUi1/img.png)
😃 || 정리 부전승이 따로 있지 않고 , 참가자가 2의 제곱으로 주어지기 때문에 한 번 라운드가 끝날 때 마다 참가자가 이전라운드 참가자의 2분의 1로 줄어드는 것을 확인할 수 있었다. 처음에는 b와 a의 차이가 1일 때로 생각해서 풀었더니 정확도가 88점... 왜 일까 알고보니 a가 4, b가 5로 주어질 경우는 차이가 1이므로 내가 만든 풀이에선 라운드가 한번밖에 진행되지 않지만 사실은 라운드가 3번은 진행되어야 하는 것이었다. 그래서 a와 b가 같아지지 않을 때 까지로 조건을 변경해서 풀었더니 해결! 😃 || 풀이 방법 class Solution { public int solution(int n, int a, int b) { int roundCnt = 0; while(a != b){ roundCn..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bIaKqZ/btq44Pt4yAr/7M1s4FKloUx7GM945RFu6K/img.png)
😃 || 정리 1) 끝말잇기에서 패하는 경우 두 가지 단어가 중복되는 경우 💬 ArrayList를 선언해서 단어들을 넣은 후 , contains메서드를 이용해서 단어가 중복되는지 확인 직전 단어의 마지막 문자로 시작하는 단어가 아닐 경우 💬 substring 메서드를 이용해서 이전 단어의 마지막글자와 다음 단어의 첫번째 글자를 가져와 같은지 확인함 2) 반복문을 모두 통과하지 못할 경우 탈락한 사람의 번호와 그 사람의 순서를 반환 💬 [다음 단어의 index%사람수+1, 다음 단어의 index/사람수+1] 이 식은 노가다로 직접 단어의 인덱스와 길이 , n값 도출되어야 하는 값을 써보면서 규칙을 찾았다 ^.T 3) 반복문을 모두 통과할 경우 끝말잇기 성공 💬 [0,0]값을 반환함 😃 || 풀이 방법 im..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/BuDRP/btq3qfuLv5g/z2C2HegPQ3jf6TJy5LapeK/img.png)
😃 || 정리 1. 처음에는 '중복되는' 숫자들을 제거한 배열을 리턴해주는 줄 알고 Set을 써서 구현했었다. 알고보니 '중복되는'이 아닌 ' 연속되는' 숫자임을 깨닫고 다시 풀이 시작 2. 그렇다면 연속되는 숫자는 어떻게 구분해줄까를 다시 고민했다. 일단 연속되는 숫자 중 가장 먼저 나타나는 숫자를 기준으로 배열에서 값을 가져온 후 기준값과 배열에서 가져온 값이 같지 않을 때, 배열에서 가져온 값을 return 배열에 넣어주기로 했다. 그런데 return 배열의 크기가 정해지지 않았기 때문에 나는 ArrayList를 사용하기로 했다. 그 후 다시 ArrayList를 int배열로 바꿔서 return 했다. 😃 || 풀이 방법import java.util.*; public class Solution { p..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dfk0tQ/btqYQxZt1TM/6Zz2KqhVlLrShkcgH7c460/img.png)
😃 || 정리 완전탐색(Brute-Force Search) 알고리즘이란 이름 그대로 처음부터 끝까지 하나하나 탐색해보는 방법이다. 예를 들어 핸드폰 4자리숫자를 풀 때 0000부터 9999까지 직접 쳐보는 것을 생각하면 된다. 시간이 걸리기 때문에 탐색할 것이 적은 곳에 사용하는 것이 좋다. 그리고 시작과 끝을 고려하는 것이 메모리와 시간을 줄이는 것 모두에 좋다. 😃 || 풀이 방법class Solution { public int[] solution(int brown, int yellow) { int[] answer = {}; int carpetLen = brown + yellow; for(int i=1; i= cRow){ answer = new int[]{cCol , cRow}; break; } } ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dko38j/btqX6fkHlK2/keiXEv1Bzpbn1o8xOJ4DuK/img.png)
10진법(decimal number) 다른 진법 왔다갔다 하는 문제 풀이방법 😃 || 정리하는 이유 오랜만에 푸는 문제라 처음에 방황하고 차근차근 나눗셈부터 시작해서 패턴을 찾고 풀었다. 그랬더니 생각보다 시간이 너무 걸렸다. 진법 왔다갔다 하는 문제를 은근 많이 접하기 때문에 생각나는 김에 블로그에 정리! 😃 || 10진법을 2진법으로 만들기우선 7을 예로 들어보자 7을 2로 나누면 몫은 3이 되고 나머지는 1이된다. 이제 3을 2로 나누면 몫은 1이되고 나머지는 1이된다. 더이상 나누어 지지 않으므로 여기서 계산을 끝내고 남은 몫과 나머지들을 거꾸로 써주면 된다. 글로 쓰면 이해가 안가니 그림으로 설명해보면 다음과 같다. 따라서 7을 2진법으로 나타내면 111(2)가 되는 것이다. 😃 || 이번엔 2..