본문 바로가기

코딩테스트 연습102

N개의 최소공배수 https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krclass Solution { public int solution(int[] arr) { int lcm = arr[0]; for (int i = 1; i 2024. 5. 27.
점프와 순간 이동 https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr기록용으로 남긴다. 그리디로 풀어야 하는 문제다.(말이 '그리디로 풀어야 한다'지 실제로 그렇게 하라 하면 바로 코드가 안 나온다.)특이사항은 최적해를 찾기 위해 뒤에서 앞으로 간다는 점.public class Solution { public int solution(int N) { int batteryUsage = 0; while (N > 0) { if.. 2024. 5. 27.
[묘공단] 완전 탐색이란? 알고리즘 기법 중 완전 탐색(Exhaustive Search)이란 것이 있다.이름만 들어도 '전부 다 보는 기법' 뭐 이런 것이겠거니 유추가 되지 않는가? 그런데 완전 탐색에도 종류가 있다.1. 브루트 포스(Brute Force): 가능한 모든 경우를 시도하는 방법이다. 비밀번호 해킹 같은 주제에서 듣기 쉽다.2. 백트래킹(Backtracking): 가능한 모든 경우를 시도하되, 불필요한 경우를 미리 제거해 효율을 높이는 방법이다. 주로 재귀적으로 사용되며 유망하지 않은 경로는 더 이상 탐색하지 않는 식이다.3. 재귀(Recursion): 문제를 여러 작은 문제로 나누어 푸는 방식이다. 재귀적으로 모든 가능한 경우를 시도한다.4. 순열과 조합(Permutations and Combinations): 가능.. 2024. 5. 20.
[묘공단] 다이나믹 프로그래밍을 배워야 하는 이유 다이나믹 프로그래밍.동적 계획법.내가 지금 이걸 왜 배워야 하는데? 대표적인 알고리즘 설계 기법이 그리디, 디바이드앤컹쿼(ㅋ), 다이나믹 프로그래밍이다.기본이니까 배워야지! 프로그래머스 레벨2 정도에 오니까 인덱스 가지고 배열을 요리조리 돌려서 문제 푸는 걸로는 안 된다.한 예를 들어 보겠다.https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr난 이 문제를 아래와 같이 풀었다.class Solution { public int solution(int.. 2024. 5. 20.
[묘공단] 너비 우선 탐색(BFS) 깊이 우선 탐색을 봤다면 너비 우선 탐색을 볼 차례다. 1. 너비 우선 탐색이란?깊이 우선 탐색은 시작 노드에서 한 방향으로 끝까지 간 다음에 다른 방향에 대해서도 반복하는 알고리즘이다.너비 우선 탐색은 이름에서 알 수 있듯이시작 노드에서 출발해서인접한 노드를 먼저 탐색하고,그 다음 인접한 모드들의 인접한 노드들을 탐색하는 방식으로 진행하는 알고리즘이다.BFS는 큐로 구현되는 경우가 많다.2. BFS를 굳이 쓰는 이유가 뭘까?최단 경로.가중치가 동일한 그래프에서 BFS는, 시작 노드로부터 목표 노드까지의 최단 경로를 보장한다. 다른 경우라면레벨 순서대로 탐색해야 하거나, 특정 깊이에서 모든 노드를 탐색해야 하는 경우에 쓴다. 3. BFS는 어떻게 동작하나?1. 시작 노드를 큐에 추가한다.* 잠깐 *트리라.. 2024. 5. 19.
[묘공단] 깊이 우선 탐색(DFS) 코테를 풀다 보면 깊이우선탐색, 너비우선탐색을 자주 볼 수 있다.해당 알고리즘은 무엇일까? DFS, BFS는 트리를 순회하는 방법이다. 1. 트리라고 하면 아래와 같은 그림을 바로 떠올릴 수 있다. 그럼 아래와 같은 구조를 바탕으로 풀어야 하는 문제 유형은 무엇이 있을까?트리 문제는 주로 트리 순회, 이진 탐색 트리(BTS) 연산, 균형 트리, 특수 트리, 그리고 트리의 경로와 거리 계산으로 나뉜다.모든 걸 다 보면 좋을 것이고, 앞으로 다 살펴볼 것이지만 이번 시간에는 트리 순회 문제에 대해서만 다룬다.트리 순회 문제는 DFS, BFS를 이용해 특정 노드를 찾거나 순서를 출력하는 식이다.기억하자. 트리를 순회해야 된다? -> DFS나 BFS로 푼다. * 참고 *이진 탐색 트리 연산 문제는 삽입, 삭제,.. 2024. 5. 19.
다음 큰 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr때가 되었다...이제는 정확성이 100%여도 효율성이 떨어져서 코드 통과 못 하는 지점에 왔다.import java.util.stream.*;class Solution { public int solution(int n) { String bn1 = "", bn2 = ""; int bn1Length = 0, bn2Length = 0; long bn11s = 0, .. 2024. 5. 12.
이진 변환 반복하기 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr반성하기 위해 기록한다.class Solution { public int[] solution(String s) { StringBuilder sb = new StringBuilder(); sb.append(s); int zeroCount = 0; int totalCount = 0; int lengthAfterRemoveZero = 0; .. 2024. 5. 12.
최솟값 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krimport java.util.*;class Solution{ public int solution(int []A, int []B) { List list1 = new ArrayList(); List list2 = new ArrayList(); for(int e : A) { list1.add(e); } for(in.. 2024. 5. 12.
소수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/12921 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krimport java.util.stream.IntStream;class Solution { public int solution(int n) { // 소수의 개수를 반환 return (int) IntStream.rangeClosed(2, n).filter(this::isPrime).count(); } // 소수 판별 메소드 private boolean isP.. 2024. 5. 12.
K번째수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr문제를 풀어서 좋았다.import java.util.*;import java.util.stream.*;class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; for(int i=0; i list = Arrays.stream(arr.. 2024. 5. 10.
[1차] 비밀지도 이제 내가 이런 것도 풀 수 있게 되다니...갬덩...https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.krclass Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; String formatString = "%"+n+"s"; for(int i=0; i 2024. 5. 10.