알고리즘
-
[백준] 16236 아기 상어 (Java)알고리즘/삼성 SW 기출문제 2024. 1. 17. 09:24
https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net bfs 문제이지만, 몇가지 신경써야 할 점이 있다. 1. 타겟(가까운 물고기)이 복수라면, x좌표가 작은 물고기, 그것 또한 복수라면 y좌표가 작은 물고기를 찾아 이동 2. 아기 상어의 상태인 x, y, size, eat 의 관리 3. eat가 size와 같아 졌을 때 size 증가, eat 초기화 4. 잡아먹은 물고기 좌표값 초기화 5. 아기 상어가 목표를 잃을 때 까지 반복 해결 1. ..
-
[프로그래머스] 키패드 누르기 (Java)알고리즘/카카오 기출문제 2024. 1. 5. 10:12
https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr import java.util.*; class Solution { public String solution(int[] numbers, String hand) { String answer = ""; // 굳이 list를 사용하지 않고 if(num == 3, 6, 9)는 left를 이동 하는 방법이 더 좋았을 듯 List left_list = new ArrayList(Arrays.asList(1, 4..
-
[백준] 1715 카드 정렬하기 (Java)알고리즘/백준 2023. 12. 28. 12:58
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net n개의 숫자가 있을 때, 두 수의 합을 반복하여 최종적으로 만들어지는 숫자가 최소인 경우를 만드는 문제이다. 그 조건을 만족하려면 항상 최솟값끼리 더해야 한다. 수가 합쳐질 때 마다 남아있는 다른 숫자들과 다시 정렬이 되어야 하는데, 반복적으로 sort를 사용하는 것은 시간복잡도 상으로 낭비가 심하다. 그러니 들어오는 값을 자동으로 정렬하는 PriorityQueue 를 사용하자. i..
-
[백준] 15686 치킨 배달 (Java)알고리즘/삼성 SW 기출문제 2023. 11. 29. 20:52
https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net m == 치킨집의 개수가 됐을 때, 도시의 치킨 거리를 구해야 한다 폐업하는 지점은 dfs의 순열을 통해 탐색하자 도시의 치킨 거리는 모든 집의 위치에서 가장 가까운 치킨집의 거리를 합산하여 구하고, 이를 min과 비교하여 저장하자 혹은 브루트포스를 통해 집의 좌표와 모든 치킨집의 좌표를 비교해도 될 것이다 뭐가 더 효율적인지는 모르겠는데, 문제에선 부르트포스를 사용해 절댓값..
-
[백준] 14501 퇴사 (Java)알고리즘/삼성 SW 기출문제 2023. 11. 27. 21:42
https://www.acmicpc.net/problem/14501 집중력 최하로 떨어진 날... 어려운 문제도 아니고 같은 유형의 문제를 풀어본 기억이 있는데도 불구하고 한번에 풀지 못한게 너무 아쉽다 짧게 요약만 하고 내일 일어나서 다시 풀려고 한다 다시 풀어보니 전혀 다른 경험치를 쌓을 수 있는 문제라 생각되서 정리를 다시 한다 dp의 개념을 새로 정립한 느낌이다 n = dp(n - 1) + dp(n - 2) 와 같은 점화식은 익숙하다 하지만 선택해야 하는 범위가 상수를 연산하는 것 만으로 표현 할 수 없는 경우에 대해서는 생각해 보지 않았다 이번 문제에서는 현재 회의를 했을 때 (p[i] + dp[i]) 와 하지 않고 그 날짜만큼 지났을 때의 값(dp[t[i] + i]) 중에 큰 것을 dp[t[i..
-
[백준] 16234 인구이동 (Java)알고리즘/삼성 SW 기출문제 2023. 11. 24. 13:34
https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net import java.io.*; import java.util.*; class Main{ static boolean[][] visit; static List list; static int[][] map; static int[] dx = {-1, 1, 0, 0}; static int[] dy = {0, 0, -1, 1}; static int n, L, R; public static v..