백준 문제풀이 코드저장소/Silver (11) 썸네일형 리스트형 Baekjoon 1406. 에디터 / Python 1406. 에디터난이도 : 실버 2소요 시간 : 40분날짜 : 2025.01.08언어 : 파이썬알고리즘 유형 : 연결리스트, 스택설명 보기전에 문제 풀어보러 가기1. 문제 설명주어진 문자를 주어진 명령에 따라 실행한 뒤, 마지막 남은 문자열을 출력한다.명령어는 커서를 기준으로 시작하고, 시작할 때의 커서는 맨 뒤이다.L : 커서를 왼쪽으로 한 칸 (커서가 맨 앞이면 무시)D : 커서를 오른쪽으로 한 칸 (커서가 맨 뒤이면 무시)B : 커서 왼쪽 문자를 삭제 (커서가 맨 앞이면 무시)P # : 커서 왼쪽에 # 이라는 문자 추가2. 해결 방식연결리스트 연습을 위해 고른 문제인 만큼 연결리스트를 활용해서 풀이했다.(리스트에 insert를 하는 방법도 통과되는 듯....)연결리스트 기본 구조Node : data.. Baekjoon 2156. 포도주 시식 / Python 2156. 포도주 시식난이도 : 실버 1소요 시간 : 15분날짜 : 2025.01.05언어 : 파이알고리즘 유형 : dp설명 보기전에 문제 풀어보러 가기1. 문제 설명포도주를 선택하면 모두 마셔야 하고, 제자리에 놓아야 한다.연속으로 3잔을 마실 수 없다.마실 수 있는 포도주 양의 최댓값을 구하기2. 해결 방식dp 사용 : dp[i][j] = i번 포도주를 j잔째 마시고 있는 경우 포도주양의 최댓값.0잔, 즉 i번 포도주를 안먹는다면, dp[i-1]의 값들 중 최댓값이 dp값이다.i번 포도주가 연속된 첫번째 잔이라면, dp[i-1][0]의 값과 dp[i-2]값들 중 최댓값에 현재 포도주 양을 더한 값이 dp 값이다.두번째 잔인 경우, dp[i -1][1]의 값에 현재 포도주 양을 더해주면 된다.3. 정답.. Baekjoon 2503. 숫자 야구 / Python, Java https://www.acmicpc.net/problem/2503알고리즘 설명문제 설명숫자 야구 게임세 자리 숫자를 맞춥니다.말한 세 자리의 숫자 중에 위치와 숫자가 모두 일치하는 경우엔 스트라이크,숫자는 정답숫자 안에 있으나, 위치가 다르다면 볼이 됩니다.코드 설명102 부터 987까지 모든 가능한 세자리 숫자를 생성한다.스트라이크와 볼의 입력에 따라서 숫자 후보를 제거하는 방식1. 자바코드import java.io.*;import java.util.*;import java.text.*;public class Main { public static ArrayList arr = new ArrayList(); public static ArrayList noAns = new ArrayList(); .. Baekjoon 4307. 개미 / Java https://www.acmicpc.net/problem/4307알고리즘 설명문제 설명개미들이 만나면 방향을 바꾸지만, 만났을 경우 서로 지나쳐간다라고 생각해도 논리가 같다.라는 생각을 해내면 굉장히 쉬워지는 문제코드 설명개미의 현재 위치로부터 막대 양 끝으로 가는 시간을 구해서 최소시간, 최대시간을 구한다.import java.io.*;import java.util.StringTokenizer;public class Main { public static int tc; // 테스트 케이스 수 public static int n; // 개미의 수 public static int l; // 막대의 길이 public static int[] arr; // 각 개미의 초기 위치를 저장하는.. Baekjoon 11478. 서로 다른 문자열의 개수 / Java https://www.acmicpc.net/problem/11478알고리즘 설명문제 설명문자열의 서로 다른 '부분 문자열'의 개수를 구하는 문제코드 설명모든 부분 문자열을 생성하고 집합자료구조에 부분문자열을 저장했다.집합은 중복을 허용하지 않으므로, 집합의 크기가 문제의 답이 된다.import java.io.*;import java.util.*;public class Main { public static String s; public static BufferedReader br; public static Set arr; public static int res; public static void main(String[] args) throws IOException { .. Baekjoon 16951. 블록 놀이 / Java https://www.acmicpc.net/problem/16951알고리즘 설명문제 설명각기 다른 높이를 가진 배열을 높이 차를 k로 만드는 문제코드 설명한 번에 몇개를 옮기든 하나의 블록의 높이를 바꾸는 시간은 동일하기 때문에, 하나의 블록을 고정해 놓고 완전 탐색을 하면 된다.n ㄴimport java.io.*;import java.util.StringTokenizer;public class Main { public static int n; public static int k; public static int[] arr; public static int answer = Integer.MAX_VALUE; public static void main(String[] args) t.. Baekjoon 21966. (중략) / Java https://www.acmicpc.net/problem/21966알고리즘 설명문제 설명입력 길이가 25 이하인 경우:문자열 SSS를 그대로 출력합니다.입력 길이가 25 초과인 경우:SSS의 앞에서부터 11글자, 뒤에서부터 11글자를 제외한 나머지 부분이 모두 같은 문장에 속한다면, 생략한 부분을 '...'으로 바꿔서 출력합니다.그렇지 않다면, SSS를 앞에서부터 9글자, 뒤에서부터 10글자만 남기고 중간을 '......'으로 바꿔서 출력합니다.코드 설명메서드 활용해서 풀자.import java.io.*;public class Main { public static int N; public static String s; public static String res = ""; publi.. Baekjoon 4948. 베르트랑 공준 / Java 알고리즘 설명문제 설명임의의 자연수 n에 대하여 n보다 크고 2n보다 작은 소수가 적어도 하나 존재한다.n보다 크고 2n보다 작은 소수의 개수를 구하는 문제알고리즘 설명isPrime : n의 최댓값 * 2 까지 소수판별을 한다. 이 때, 에라토스테네스의 체를 사용한다. 시간복잡도 : O(n log n)countPrime배열에 소수 개수를 저장한다. 시간복잡도 O(n)import java.io.*;public class Main { public static int n; // 소수 판별 배열, true이면 소수가 아님 public static boolean[] isPrime = new boolean[123456 * 2 + 1]; // 소수 개수를 누적합으로 저장하는 배열 publi.. Baekjoon 1912. 연속합 / Java https://www.acmicpc.net/problem/1912알고리즘 설명문제 설명주어진 수열에서 연속된 부분 수열의 합 중 가장 큰 합을 찾는 문제코드 설명dp를 활용하여 수열의 최대 부분합을 저장한다.dp[x] 는 x 위치까지 최대 부분합을 저장한다.dp[x] 는 dp[x-1] + arr[x], arr[x] 중의 큰 값이 된다.dp를 활용하여 시간복잡도를 O(n) 으로 해결할 수 있다.import java.io.*;import java.util.StringTokenizer;public class Main { public static int n; public static int[] arr; // 각 위치에서의 최대 부분합을 저장할 배열 public static int[].. Baekjoon 30804. 과일 탕후루 / Java, Python 알고리즘 설명문제 설명과일 길이의 최댓값을 구한다. 단, 과일 종류는 두 종류 이하여야 한다.과일은 앞, 뒤에서만 뺄 수 있다.코드 설명left, right를 증가시키며 최대 길이를 찾는 투포인터 알고리즘 방식을 적용했다.과일의 종류가 9개밖에 안되므로 kind 배열을 사용해서 과일마다 몇개가 들어있는지를 계산했다.최대 길이를 찾은 경우 -> 포인터 사이의 길이를 줄이면서 탐색하지 않는다, 즉 왼쪽을 한칸 당길 때, 오른쪽도 같이 당긴다.import java.io.*;public class Main { public static BufferedReader br; public static int n; // 과일의 수 public static int[] arr; // 과일의 배열상태 저장 .. 이전 1 2 다음