개발/Algorithm36 [백준 1874 with Java] 스택수열 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 스택 수열이라는 문제 이름에 맞게 스택을 활용해서 풀어주면 쉽게 풀린다. 1~n 까지 스택에 push하다가 입력받은 배열 값과 비교하면서 pop해주는 식으로 풀어보았다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOExc.. 개발/Algorithm 2024. 2. 8. [백준 1012 with Java] 유기농 배추 (DFS) https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net dfs 문제를 익히기 위한 문제로 가장 처음 풀었던 유기농 배추 문제이다. dfs, bfs 모두 풀 수 있으니 다음엔 bfs로 푸는 법을 알아보고, 이번 글에서는 dfs에 대한 설명을 적는다. 매 라인 마다 주석으로 설명을 달아서, 처음 dfs를 접하는 사람도 쉽게 이해할 수 있도록 작성해보았다. import java.io.BufferedReader; import java.io.IOException; impo.. 개발/Algorithm 2024. 2. 4. [백준 11501 with JAVA] 주식 https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 주어진 숫자들을 비교해가며 가장 많은 이익을 남겨 판매하는 것이 목표이다. 역방향 탐색으로 뒤에서부터 비교해서, 더 큰 수가 나오면 그 전 까지 판매하여 이익을 내는 식으로, 이익의 총합을 구하면 되는 문제. import java.io.*; import java.util.*; public class Main{ public static void main(String[] args) thr.. 개발/Algorithm 2023. 12. 15. [프로그래머스 with JAVA] 올바른 괄호 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색으로 풀거나, 그냥 마구잡이 조건문으로도 풀 수 있겠지만... 스택/큐 문제 유형으로 있는 문제이므로 스택으로 풀어보자! import java.util.*; class Solution { boolean solution(String s) { Stack stack = new Stack(); for(int i=0;i 개발/Algorithm 2023. 12. 4. [프로그래머스] 최솟값 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Arrays.sort 로 간단하게 풀이 가능!! import java.util.*; import java.io.*; class Solution { public int solution(int []A, int []B) { int answer = 0; Arrays.sort(A); Arrays.sort(B); for(int i=0; i 개발/Algorithm 2023. 12. 3. [프로그래머스] JadenCase 문자열 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr toUpperCase, toLowerCase, substring, split 같은 기본적인 메소드로 풀이가 가능하다. import java.util.*; class Solution { public String solution(String s) { String answer = ""; String[] arr = s.split(" "); for(int i=0; i 개발/Algorithm 2023. 12. 2. [백준 5073] 삼각형과 세 변 https://www.acmicpc.net/problem/5073 5073번: 삼각형과 세 변 각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오. www.acmicpc.net 기본적인 while 문 사용법을 익히기 좋은듯,, import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffer.. 개발/Algorithm 2023. 12. 2. [백준 23971] ZOAC4 https://www.acmicpc.net/problem/23971 23971번: ZOAC 4 i행 j열 자리를 (i, j)라고 할 때, (1,1)에 참가자가 앉은 경우 다른 참가자는 (1,2), (2,1), (2,2) 자리를 제외한 나머지 자리에 앉을 수 있다. (2,2)의 경우는 (1,1)과 행 번호 및 열 번호의 차가 1보다 크 www.acmicpc.net H행, W열의 자리가 놓여져있는 상황이다. 세로로 N만큼 떨어져서 앉아야하는데, 그럼 한 사람이 앉은 자리를 더해줘서 N+1 의 자리를 차지한다고 본다. 그럼 H 행에서 N+1의 자리를 몇번 차지할 수 있는지 구하고, 그 값을 올림해준다. (꼭 N+1을 차지하지 않더라도 한자리만 있어도 앉을 순 있으므로 ) 그럼 W 열도 마찬가지 방법으로 구한 .. 개발/Algorithm 2023. 12. 1. [프로그래머스] 최소 직사각형 (Java 풀이) 아이디어 - 배열로 받은 명함 사이즈를 긴 부분과 짧은 부분 배열 두 개로 나누어준다. - 긴 부분에서 가장 큰 사이즈, 짧은 부분에서 가장 큰 사이즈를 구함으로써 모든 명함이 들어 갈 수 있는 사이즈를 만들 수 있게 된다. 풀이 class Solution { public int solution(int[][] sizes) { int answer = 0; int[] longD = new int[sizes.length]; int[] shortD = new int[sizes.length]; //명함의 긴 부분과 짧은 부분 배열에 담기 for(int i=0;i 최소값 for(int j=0;j < sizes.leng.. 개발/Algorithm 2023. 8. 6. [PS] 코딩테스트에 나오는 완전탐색 문제를 해결하기 위해 확인해야하는 모든 경우의 수를 돌아보는 유형의 문제를 완전탐색 이라고 한다. 굉장히 자주 출제되는 경향이 있으므로 많은 연습을 필요로 하는 유형이다. 완전탐색의 종류로 1. N개 중 중복을 허용 2. N개 중 중복없이 3. M개를 순서있도록 나열 4. M개를 고르기 의 종류로 나눌 수 있다. 완전 탐색은 문제가 요구하는 바에 맞게 재귀 함수를 짤 줄 알아야 한다고 생각한다. 여러 문제를 풀어보면서 다양한 재귀 함수를 짜는 것에 익숙해지는 것이 먼저다. 개발/Algorithm 2023. 7. 31. [프로그래머스] 요격 시스템 (Java 풀이) 아이디어 - 범위가 배열로 주어지는데, 겹치는 부분을 확인하기 위해 범위의 종료 지점을 작은 순으로 정렬 - 첫 인덱스 부터 시작하여 종료 지점에서 -1 한 값이 다음 인덱스의 범위에 들어가는지 확인, 안 들어가면 해당 요격은 종료되고 새로운 요격 시스템이 추가되는 형식 풀이 import java.util.*; class Solution { public int solution(int[][] targets) { //기본 요격 횟수 1회 int answer = 1; // 인덱스 1의 값이 작은 순으로 정렬하는 람다식 Arrays.sort(targets, (o1, o2) -> { return o1[1]-o2[1]; }); //요격 위치 int aim = 0; for(int[] target : targets){.. 개발/Algorithm 2023. 4. 16. [Python] 백준 9093번 단어 뒤집기 T = int(input()) for _ in range(T): word = list(input().split()) word_reverse = [] for i in word: word_reverse.append(i[::-1]) print(*word_reverse) 개발/Algorithm 2021. 11. 15. 이전 1 2 3 다음