본문 바로가기

문제풀이/프로그래머스15

[Python] 영어 끝말잇기 (문제설명) (제한사항) (풀이 설명) (코드 - Python) def solution(n, words): answer = [0, 0] human = [0 for i in range(0, n)] before = [] who = 0 for word in words: human[who] += 1 if word in before or (len(before) > 0 and before[-1][-1] != word[0]): answer[0] = who+1 answer[1] = human[who] break before.append(word) who += 1 if who == n: who = 0 return answer 2022. 9. 26.
[Python, JAVA] 프로그래머스 - 다음 큰 숫자 (문제설명 / 제한사항) (풀이 방법) 1) n을 1씩 증가해가면서 이진수로 변환한다. 2) 1의 개수가 동일하면 while문을 빠져나온다. 3) 최종 n 값을 리턴해준다. (코드 - Python) def solution(n): answer = 0 one_count = bin(n)[2:].count('1') while True: n += 1 if bin(n)[2:].count('1') == one_count: break answer = int(n) return answer (코드 - JAVA) class Solution { public int solution(int n) { int answer = 0; int one_count = 0; String binary = Integer.toBinaryString.. 2022. 9. 26.
[JAVA] 프로그래머스 - 카카오프렌즈 컬러링북 (문제 설명) (코드) 영역 개수 구할 때 사용하는 함수는 countArea()와 deepCountArea() 최대 영역 크기 구할 때 사용하는 함수는 maxArea()와 deepMaxArea() 이중 for문을 돌면서 재귀 함수로 각각의 index에 deep 하게 접근하는 방식을 택했다. 이때 if문의 조건이 영역 개수, 최대 영역 크기를 구하는 차이라고 보면 된다. import java.util.*; class Solution { public int[] solution(int m, int n, int[][] picture) { int numberOfArea = countArea(picture); System.out.println(numberOfArea); int maxSizeOfOneArea = ma.. 2022. 4. 6.
[JAVA] 프로그래머스 - 오픈채팅방 (시간복잡도 빅오 O(n)) (문제 설명) (제한사항) (코드) 빅오 O(n)으로 만들어 작성했고, 중요한 부분은 첫 번째 for문에서의 count 쓰임과 두 번째 for문에서 count 쓰임이 다르다는 것만 신경 써서 보면 될 것 같다. import java.util.*; class Solution { public String[] solution(String[] record) { /* 유저아이디, 닉네임 */ Map map = new HashMap(); int count = 0; for(int i=0; i= 3){ map.put(col[1], col[2]); if("Change".equals(col[0])){ count++; } } } String result[] = new String[record.length - count]; .. 2022. 3. 30.
[JAVA] 프로그래머스 - 야근지수 (문제 설명) (제한 사항) 일단 works를 정렬해주고, 가장 큰 값인 works.length-1 인덱스부터 -1씩 해준다. (귀찮아서 내림차순으로 안했ㄷ..) works.length-1과 works.length-2 비교해서 인덱스 값과 -1되는 값을 결정해줬다. public static void main(String[] args) { int[] works = {4,3,3}; int n = 4; Arrays.sort(works); if(works.length != 1) { int k = works.length-1; while(n != 0) { if(works[k-1] < works[k]) { works[k] -= 1; k = works.length-1; } else if(works[k-1] == wor.. 2021. 2. 17.
[JAVA] 프로그래머스 - 가장 긴 팰린드롬 (문제 설명) (제한 사항) 어떻게 짜야할까 고민을 꽤 하다가.. 문자 각각을 중심으로 팰린드롬이 생성되는 모든 케이스를 나눠 조사해버리자 해서 만들어진 코드이다. public static void main(String[] args) { int max = 1; for(int i=1; i= 0 && b+k < s.length()) { int start = a-k, end = b+k; if(s.charAt(start) == s.charAt(end)) { tmp += 2; k++; } else break; } return tmp; } 2021. 2. 16.