Banner

My Tech Blog (분류 전체보기)

📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/43165💡 2. 풀이과정각 숫자마다 연산자로 두 가지 선택지가 있다. → `+` 또는 `-`DFS로 모든 경우를 탐색하면서 합계를 누적한다.모든 숫자를 다 사용한 시점은 (depth == numbers.length)에 합이 target과 같으면 count++;한 마디로 요약하면 DFS는 모든 가능한 경우를 빠짐없이 탐색하고, 각 경우마다 합계를 체크해서 target과 같으면 세는 방법이다. 여기선느 각 숫자마다 +,- 2가지 선택지가 있으니까 따라서 아래와 같은 개수의 조합이 생성된다.총 경우의 수 = 2^numbers.length 문제에 나온 예시1에서는 [1, 1, 1, 1, ..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/12911💡 2. 풀이과정이문제는 2진수에서 1의 개수를 유지하면서 다음 큰 수를 찾는 문제인데, bitCount로 1의 개수를 세고, 조건이 맞을 때까지 숫자를 증가시키면 된다. 👨‍💻 3. 정답코드class Solution { public int solution(int n) { int count = Integer.bitCount(n); // n의 1 개수 int next = n + 1; while (Integer.bitCount(next) != count) { next++; } ..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/1334991. 문제 요약 문자열이 "aya", "ye", "woo", "ma" 네 가지 발음으로만 이루어져 있고, 같은 발음을 연속해서 쓰면 안 된다💡 2. 풀이과정words 배열 선언하고 가능한 발음 넣어두기각 문자열 b에 대해 처음부터 차례대로 확인하기startsWith(w, i) 써서 현재 위치에서 가능한 발음이 시작되는지 확인하기같은 발음이 직전에 사용된 것(prev)와 같으면 건너뛰기끝까지 조건을 만족하면 유효한 단어로 카운트👨‍💻 3. 정답코드class Solution { public int solution(String[] babbling) { St..
📑 1. 문제설명최단 경로를 보장하는 문제에서 너비 우선탐색을 한다. 너비 우선탐색을 큐로 구현해보자.너비 우선 탐색으로 모든 노드를 순회하는 함수 solution()을 작성하기시작노드는 매개변수 start로 주어진다. graph는 (출발 노드, 도착 노드) 쌍들이 들어 있는 리스트이다. 반환값은 그래프의 시작 노드부터 모든 노드를 너비 우산 탐색으로 진행한 순서대로 노드가 저장된 리스트이다. 제약 조건노드의 최대 개수는 100개이다.시작 노드부터 시작해서 모든 노드를 방문할 수 있는 경로가 항상 있다.그래프의 노드는 숫자이다.입출력 예graphstartnreturn[[1, 2], [1, 3], [2, 4], [2, 5], [3, 6], [3, 7], [4, 8], [5, 8], [6, 9]]19[1..
📑 1. 문제설명정수 N을 입력 받가 1부터 N까지의 숫자 중에서 합이 10이 되는 조합을 리스트로 반환하는 solution() 함수를 작성하세요. 제약조건백트래킹을 활용해야 합니다.숫자 조합은 오름차순으로 정렬되어야 한다.같은 숫자는 한 번만 선택할 수 있다.N은 1이상 10이하인 정수이다.입출력 예Nresult5[[1, 2, 3, 4], [1, 4, 5], [2, 3, 5]]2[]7[[1, 2, 3, 4], [1, 2, 7], [1, 3, 6], [1, 4, 5], [2, 3, 5], [3, 7], [4, 6]]💡 2. 풀이과정조합한 숫자의 합이 10이 되면 해당 조합을 결과 리스트에 추가하기조합한 숫자의 합이 10보다 크면 백트래킹(유망 함수 조건)이건 유망함수 조건만 잘 파악하면 쉽게 구현할 ..
📑 1. 문제설명깊이 우선 탐색으로 모든 그래프의 노드를 순회하는 함수 solution() 작성하기시작 노드는 start로 주어진다. graph는 [출발 노드, 도착 노드] 쌍들이 들어 있는 리스트이다.반환값은 그래프의 시작 노드부터 모든 노드를 깊이 우선 탐색으로 진행한 순서대로 노드가 저장된 리스트 제약조건노드의 최대 개수는 100개를 넘지 않습니다.시작 노드부터 시작해서 모든 노드를 방문할 수 있는 경로가 항상 있다.그래프의 노드는 문자열이다.입출력 예graphstartnreturn[['1', '2'], ['2', '3'], ['3', '4'], ['4', '5']]'1'5['1', '2', '3', '4', '5'][['1', '2'], ['1', '3'], ['2', '4'], ['2', '5..
📑 1. 문제설명간단한 유니온 파인드 알고리즘 구현하기union(x, y) : x와 y가 속한 두 집합을 합칩니다.find(x) : x가 속한 집합의 대표 원소를 찾습니다.operations 라는 배열은 수행할 연산을 의미한다. 연산 종류는 2개이다.[0, 1, 2]는 노드1과 노드2에 대해 union 연산 수행[1, 1, 3] 노드 1과 3이 같은 집합에 속해 있으면 true, 아니면 false를 반환하는 equals 연산초기의 노드는 부모 노드를 자신의 값으로 설정했다고 가정하며 여기서는 각 집합의 루트 노드를 기준으로 루트 노드가 작은 노드를 더 큰 노드의 자식으로 연결하는 방법을 사용한다. operations에 있는 연산에 대한 결과를 연산 순서대로 담은 Boolean 배열을 반환하는 solu..
· Java
⚠️ 문제프로그래머스[1차] 캐시 https://school.programmers.co.kr/learn/courses/30/lessons/17680import java.util.LinkedHashMap;import java.util.Map;class Solution { public int solution(int cacheSize, String[] cities) { if (cacheSize == 0) return cities.length * 5; // 캐시 없으먄 모두 miss int time = 0; // accessOrder = true // 이렇게 하면 최근에 접근한 순서대로 자동 정렬 LinkedHas..
인절미였던것
'분류 전체보기' 카테고리의 글 목록
상단으로