전체 글 239

백준-10815번/숫자 카드 (java)

문제숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오.입력첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다.셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 ..

카테고리 없음 2024.10.05

백준-1541번/잃어버린 괄호 (java)

문제수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.문자열의 뒤에 A를 추가한다.문자열을 뒤집고 뒤에 B를 추가한다.주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 입력첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 999, 2 ≤ T의 길이 ≤ 1000, S의 길이 출력S를 T로 바꿀 수 있으면 1을 없으면 0을..

알고리즘/백준 2024.10.05

백준-10610번/30 (java)

문제 이해 이 문제를 풀때 가장 중요한 점은 다음 과 같다.1) N는 최대 105개의 숫자로 구성 ==> Int나 Long으로 받을 수 없는 숫자 이므로 문자열로 바꾼후 배열에 숫자로 변환하여 넣어준다.2) 30의 배수가 되기 위한 조건 ==> 1의 자릿수가 0이고 각 자릿수의 합이 3의 배수이다.  문제 해결  숫자를 문자열로 입력받고 정수형 배열에 각 자릿수를 넣어준다.** 문자를 숫자로 바꿀때 ==> 문자의 아스키 코드에서 48을 빼준다. **String N = scanner.nextLine();int[] arr = new int[N.length()];int sum = 0;for(int i=0; i 오름차순 정렬했을때 arr[0]이 0이면 1의 자리숫자가 0이 될 수 있고, 각 자릿수의 합이 3의 ..

알고리즘/백준 2024.10.04

백준-2875번/대회 or 인턴 (java)

문제백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다. (왜인지는 총장님께 여쭈어보는 것이 좋겠다.)백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다. 대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다. 인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.입력첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N),출력만들 수..

알고리즘/백준 2024.10.03

백준-1541번/잃어버린 괄호 (java)

문제 이해 숫자, +와 - 로 이루어진 계산식에서 괄호를 넣었을때의 최솟값을 구하는 문제이다.이 문제를 풀기 위해서는 식에서 최솟값이 되는 경우를 찾아야 한다. ex)55-50+40 최솟값이 되는 식 ==> 55-(50+40) 10+20+30+40 최솟값이 되는 식 ==> (10+20+30+40) 50+40-60+40 최솟값이 되는 식 ==> (50+40)-(60+40) 식이 최솟값이 되도록 괄호를 만드려면 "-"를 기준으로 식을 괄호로 나눠주면 된다. 문제 해결 ex) 50+40-60+40 1) 식을 -를 기준으로 나눠주기String input =scanner.nextLine();String[] sub = input.split("-"); (50+40) , (60+40) 2) 괄호안의 숫자들을 +를 기준..

알고리즘/백준 2024.10.01

백준-11399번/ATM (java)

문제 이해 N명의 사람이 ATM앞에 줄을 서서 돈을 뽑는데 각 사람마다 뽑는데 걸리는 시간이 다르다. EX) 입력이 아래와 같을때 최소로 걸리는 시간은 다음과 같이 구할 수 있다.53 1 4 3 2 1) 오름 차순으로 정렬 ==> 돈을 뽑는데 적은 시간이 걸리는 사람을 먼저 뽑게해서 마지막 사람이 기다리는 시간을 최소화1 2 3 3 4 이렇게 정렬을 하고 돈을 뽑는데 걸리는 시간을 구해주면 다음과 같다. 1+(1+2)+(1+2+3)+(1+2+3+3)+(1+2+3+3+4) = 32 문제 해결 우선 배열에 걸리는 시간들을 입력받고 오름차순으로 정렬시켜줬다.int[] arr = new int[N];for(int i=0; i  그 후 이중 반복문을 이용해서 걸리는 시간을 계산해준다.int time=0;for(i..

알고리즘/백준 2024.08.26

백준-1931번/회의실 배정 (java)

문제 이해 N개의 회의 시작시간, 끝나는 시간이 주어질때  각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 구해주면 된다. 이 문제에서 가장 중요한 점은 각 회의들의 종료 시간이 빠른 순으로 정렬을 해야한다는 점이다.왜냐하면 종료시간 기준으로 오름차순 정렬을 해주면 회의가 빨리 끝나서 최대한 많은 회의를 진행하는 경우를 구할 수 있기 때문이다.  문제 해결 ex) 예제 입력111 43 50 65 73 85 96 108 118 122 1312 14  이것을 종료시간 기준 오름 차순으로 정렬해주면 다음과 같이 변한다.[1, 4][3, 5][0, 6][5, 7][3, 8][5, 9][6, 10][8, 11][8, 12][2, 13][12, 14] 1에 시작 ---> 4에 종료..  ..

알고리즘/백준 2024.08.23

백준-11047번/동전 0 (java)

문제 이해 N개 종류의 동전이 존재(각 종류별로 동전의 갯수는 충분히 존재함)이 동전들로 K원을 만들 수 있는 최소 동전의 갯수를 구하면 된다. 문제 해결 동전을 입력 받을때 오름 차순으로 입력받으므로 배열의 뒷부분(가장큰 금액의 동전)부터 연산에 포함해주면 최소한의 동전으로 K원을 맞출 수 있다.import java.util.Scanner;public class Problem11047 { static int N; static int K; static int[] arr; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count=0; N=s..

알고리즘/백준 2024.08.21

회원가입 로그인 구현

우선 맴버를 정의 해준다( 로그인 아이디, 패스워드를 가짐)package hello.login.domain.member;import lombok.Data;import javax.validation.constraints.NotEmpty;@Datapublic class Member { private Long id; @NotEmpty private String loginId; //로그인 아이디 @NotEmpty private String name; @NotEmpty private String password;}@NotEmpty를 넣어 줌으로써 아이디 비밀번호의 공백을 방지해준다.  @Controller@RequiredArg..

BackEnd/spring 2024.08.19

백준-10026번/적록색약 (java)

문제 이해위 표와 같이 RGB로 구성된 그래프에서 색깔별 구역의 갯수를 구해주면 된다. 단, 적록색약의 경우 R과 G를 구분하지 않고 구역의 수를 구해준다.구역의 갯수를 구해주면 되므로 연결성분의 수를 구해줄때와 마찬가지로 BFS로 구현해봤다.문제 해결 BFS구현public static void bfs(int x, int y, char c){ Queue queue = new LinkedList(); queue.add(new int[]{x, y}); visit[x][y] = true; while(!queue.isEmpty()){ int[] point = queue.poll(); int pointX = point[0]; int pointY = poi..

알고리즘/백준 2024.08.13