분류 전체보기

    타켓넘버→ DFS(깊이우선탐색)★★+요소 더하기, 요소 빼기+ 재귀함수

    나의 틀린 풀이 def solution(numbers, target): return DFS(0, 0, target, 0) def DFS(L, sum, target, cnt): if L ==len(numbers): if sum == target: cnt+=1 return cnt else: DFS(L+1, sum-numbers[L], target, cnt) DFS(L+1, sum+numbers[L], target, cnt) numbers = [4, 1, 2, 1] target = 4 print(solution(numbers, target)) 성공한 나의 풀이 def solution(numbers, target): def DFS(L, sum, target, cnt): if L ==len(numbers): if..

    전화번호 목록 →기준값 갱신+startswith()+숫자문자열 정렬★★

    1차 극복 예) 119 > 119234 (접두어인 경우) false, 119 > 12119234 (중간 포함이므로 접두어 아님) true 119 > 12342119 (끝에 포함이므로 접두어 아님) true ▶ startswith() → 테스트 케이스1 극복 2차 극복 ▶ 테스트 케이스 ["11" "1"] → false가 나와야된다. 왜냐하면 아래와 같이 정렬하는 경우 ["1" "11"] → "11"안에 접두어 "1"이 있으므로 false가 나와야된다. 이러한 테스트 케이스를 극복하기 위해 미리 "문자열길이"를 기준으로 정렬해준다. (어차피 틀린 풀이) 3차 극복 ▶ break를 사용하는 경우 안쪽 for문을 종료하고, 바깥쪽 for문을 다시 수행하지만, 접두어가 포함된 문자열을 찾은 경우 return F..

    문자열 길이를 기준으로 정렬★★

    문자열 길이를 기준으로 "오름차순"으로 정렬-버전1 String[] words = {"apple", "banana", "cherry"}; Arrays.sort(words, (s1, s2) -> s1.length() - s2.length()); 문자열 길이를 기준으로 "오름차순"으로 정렬-버전2 Comparator comparator = (s1, s2) -> s1.length() - s2.length(); Arrays.sort(words, comparator); 문자열 길이를 기준으로 내림차순으로 정렬-버전1 String[] words = {"apple", "banana", "cherry"}; Arrays.sort(words, (s1, s2) -> s2.length() - s1.length()); - 문자..

    뉴스 클러스터링→substring(), 정규식, 이중for문+교집합★★

    나의 풀이 import java.util.*; class Solution { public int solution(String str1, String str2) { ArrayList str1Array = new ArrayList(); ArrayList str2Array = new ArrayList(); for (int i = 0; i < str1.length()-1; i += 1) { String sub1 = str1.substring(i, i + 2).toUpperCase(); if (sub1.matches("^[a-zA-Z]*$")) { str1Array.add(sub1); } } for (int i = 0; i < str2.length()-1; i += 1) { String sub2 = str2.su..