본문 바로가기

Algorithm

(37)
[Java] 백준 1254 : 팰린드롬 만들기 📌 문제 https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 💻 소스코드 package baekjoon; import java.util.Scanner; // S.2, 팰린드롬 만들기 public class B1254 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); int answer = str.le..
[Java] 백준 2003 : 수들의 합2 📌 문제 https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 💻 소스코드 package baekjoon; import java.util.ArrayList; import java.util.List; import java.util.Scanner; // S.4, 수들의 합 2 public class B2003 { public static void main(String[] args) { Scanner scanner..
[Java] 백준 2167 : 2차원 배열의 합 📌 문제 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 📝 풀이 2차원 배열 생성 & 배열에 값 저장하기 쿼리의 개수 입력 받기 k 만큼 반복하면서 각각의 더한 값 출력 쿼리 범위 내의 값의 합 구하기 💻 소스코드 package baekjoon; import java.util.Scanner; // 2차원 배열의 합, S : 5 public class B2167 { public static void main(Str..
[Java] 백준 25556 : 포스택 💻 문제 https://www.acmicpc.net/problem/25556 25556번: 포스택 포닉스가 순열을 청소할 수 있으면 YES, 불가능하다면 NO를 출력한다. www.acmicpc.net 💻 문제 이해 순열을 청소하는 것은 다음과 같은 과정을 통해 순열을 오름차순으로 정렬하는 것을 뜻한다. 순열 A의 원소들을 앞 원소부터 순서대로 네 개의 스택 중 하나에 삽입한다. 순열 A의 모든 원소를 스택에 삽입했다면, 네 개 중 원하는 스택에서 수를 꺼내는 것을 반복하여 네 개의 스택에서 모든 수를 꺼낸다. 꺼낸 수들을 꺼낸 순서대로 오른쪽에서 왼쪽으로 나열한다. 즉, 가장 처음에 꺼낸 수가 맨 뒤, 가장 나중에 꺼낸 수가 맨 앞에 위치하게 된다. 스택의 특징을 생각해 보면 먼저 넣은 값은 제일 나중에..
[Java] 유클리드 호제법 (Euclidean Algorithm) 📌 유클리드 호제법이란? 두 개의 수가 자연수가 주어졌을 때 최대공약수(GCD)를 구하는 알고리즘을 말한다. 여기서 GCD 란? Greatest Common Divisor. 즉 가장 큰 공통된 약수라는 의미다. // 최대공약수 구하기 public static int gcd(int a, int b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } 코드는 재귀를 사용하여 'b'와 'a'의 나머지를 'b'로 나눈 나머지를 'b'가 0이 될 때까지 반복적으로 호출합니다. 이 시점에서 GCD로 'a'를 반환합니다. 나머지가 0이라면 해당 수가 최종 최대공약수이다. 그렇지 않다면 나머지를 a로 바꾸어 재귀를 반복한다. +) 최소공배수 // 최소공배수 구하..
[Java] 프로그래머스 : 키패드 누르기 📄 문제 https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💻 코드 package programmers; public class Lv1_Kakao_220712 { // 키패드 누르기 //도움 코드 public static void main(String[] args) { int[] numbers = {7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2}; String hand = "left"; System.out.println(solution..
[Java] 프로그래머스 : 모의고사 📌 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42840 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💻 코드 package programmers; import java.util.Arrays; public class Lv1_220705_2 { // 모의고사 // 도움 코드 public static void main(String[] args) { int[] answer = {1, 3, 2, 4, 2}; System.out.println(Arrays.toString(solution(answe..
[Java] 프로그래머스 : 두개 뽑아서 더하기 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 📌 코드 package programmers; import java.util.*; public class Lv1_Pro_220701_3 { // 두개 뽑아서 더하기 public List solution(int[] numbers) { Set set = new LinkedHashSet(); // 1 for (..