스터디/Algorithm 30

[백준] 빙산 2573 java - bfs, dfs

https://www.acmicpc.net/problem/2573 bfs와 dfs를 모두 활용한 문제빙산이 분리됐는지 확인할 때에는 dfs녹는 과정에 대한 처리는 bfs로 처리해줬다동서남북 바다의 개수를 카운트 한 후에 빙산에서 그 값만큼 빼야하는데이 때에 원래 빙산 상태를 어떻게 저장해야하나.. 고민하다가빙산 상태를 매번 copy(깊은 복사) 해주었더니 시간초과가 발생했다따라서 초반에 빙산을 모두 queue에 넣은 후에 visited 처리를 하는 방식으로코드를 수정했다 !! (그렇다면 이후에 변화된 빙산에 영향을 받지 않고 맞닿은 바다를 계산해줄 수 있다) 내 풀이import java.io.*;import java.util.*;public class Main { static int N, M; ..

스터디/Algorithm 2024.06.18

[백준] 직사각형 탈출 16973 java - bfs

https://www.acmicpc.net/problem/16973 생각보다 어렵게 풀린 문제 ㅜ_ㅜ이 문제의 핵심 포인트는 다음과 같다1. 직사각형 중 첫번째 좌표의 범위를 잘 잡기(1~N-H+1,1~M-W+1)2. 사각형의 범위 안에 1이 있으면 안되는데 이를 판별할때이중 for문으로 만들어진 사각형마다 확인하면 시간초과가 발생한다따라서 먼저 1(벽)을 ArrayList에 추가한 후에 벽의 좌표를 꺼내서사각형의 범위 안에 있는지 역으로 확인해야 함!!=> walls에 벽의 x좌표, y좌표를 추가함  1번 조건을 고려하지 않았을 때 반럐5 50 0 0 0 00 0 0 0 00 0 1 0 00 0 0 0 00 0 0 0 02 2 1 1 5 4정답: -1 내 답안import java.io.*;import ..

스터디/Algorithm 2024.06.15

[백준] 입국심사 3079 java - 이분 탐색

https://www.acmicpc.net/problem/3079 상근이와 친구들은 오스트레일리아로 여행을 떠났다. 상근이와 친구들은 총 M명이고, 지금 공항에서 한 줄로 서서 입국심사를 기다리고 있다. 입국심사대는 총 N개가 있다. 각 입국심사관이 심사를 하는데 걸리는 시간은 사람마다 모두 다르다. k번 심사대에 앉아있는 심사관이 한 명을 심사를 하는데 드는 시간은 Tk이다.가장 처음에 모든 심사대는 비어있고, 심사를 할 준비를 모두 끝냈다. 상근이와 친구들은 비행기 하나를 전세내고 놀러갔기 때문에, 지금 심사를 기다리고 있는 사람은 모두 상근이와 친구들이다. 한 심사대에서는 한 번에 한 사람만 심사를 할 수 있다. 가장 앞에 서 있는 사람은 비어있는 심사대가 보이면 거기로 가서 심사를 받을 수 있다...

스터디/Algorithm 2024.05.30

[백준] 절댓값 힙 11286 java - Priority Queue

https://www.acmicpc.net/problem/11286 priority queue를 이용해서 조건에 따라 우선순위를 부여하는 방식으로구현했다  내 풀이import java.io.*;import java.util.*;public class Main { static int K, N; static int[] A; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //StringTokenizer st = new StringTokenizer(br.readLine()); ..

스터디/Algorithm 2024.05.18

[백준] 불 4179 java - bfs

https://www.acmicpc.net/problem/4179 [첫번째 틀린 답안]불과 지훈이가 동시에 움직이는 것이 이 문제의 포인트라고 할 수 있다.동시간대에 불과 지훈이를 하나씩 움직여줘야 되는데이를 어떻게 처리해야할지가 어려웠다..처음에는 아래처럼 로직을 짰는데생각해보니 아래 코드는 불의 위치가 지훈이보다 앞서있을 때에만 유효한 코드이다.. import java.io.*;import java.util.*;public class Main { static int R,C; static char[][] map; static boolean[][] visited; static int[] dx = {1,-1,0,0}; static int[] dy = {0,0,1,-1}; s..

스터디/Algorithm 2024.05.03

[프로그래머스스쿨] 가장 큰 수 java (lv.2)

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 내 풀이  import java.util.*;class Solution {public String solution(int[] numbers) {String answer = "";String[] arr = new String[numbers.length]; for(int i=0;i (o2+o1).compareTo(o1+o2)); for(int i=0;i}    Arrays.sort커스텀하..

스터디/Algorithm 2024.05.03

[백준] 겹치는 건 싫어 java - two pointer

https://www.acmicpc.net/problem/20922출력조건을 만족하는 최장 연속 부분 수열의 길이를 출력한다.예제 입력 1 복사9 23 2 5 5 6 4 4 5 7예제 출력 1 복사7예제 입력 2 복사10 11 2 3 4 5 6 6 7 8 9예제 출력 2 복사6  내 풀이hashMap과 투 포인터로 풀었다hashMap에 배열 값을 0으로 초기화 해준 후K초과 일 때에 start_index를 증가시키는 방향으로 로직을 짰다  import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new ..

스터디/Algorithm 2024.05.02

[백준] 배열 합치기 java - two pointer

문제정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.입력첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.출력첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.예제 입력 1 복사2 23 52 9예제 출력 1 복사2 3 5 9예제 입력 2 복사2 14 71예제 출력 2 복사1 4 7예제 입력 3 복사4 32 3 5 91 4 7예제 출력 3 복사1 2 3 4 5 7 9  내 답안1. 투 포인터 활용import java.io.*;import java.util.*;p..

스터디/Algorithm 2024.04.29

[백준] 폴리오미노 java - greedy

민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 예제 입력 1 복사 XXXXXX 예제 출력 1 복사 AAAABB 예제 입력 2 복사 XX.XX 예제 출력 2 복사 BB.BB 예제 입력 3 복사 XXXX....XXX.....XX 예제 출력 3 복사 -1 예제 입력 4 복사 X 예제 출력 4 ..

스터디/Algorithm 2024.04.17

[프로그래머스] 완주하지 못한 선수 java (lv. 1)

문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 ["leo", "kiki", "eden"] ["eden", "kiki"] "leo..

스터디/Algorithm 2024.04.11