본문 바로가기

알고리즘 공부 및 문제 풀이/백준(BOJ)

(220)
[boj] 백준 16236 아기 상어 (Java) - BFS, 시뮬레이션 [문제] https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net [풀이] BFS를 이용한 시뮬레이션 문제이다. 1. 먹을 수 있는 물고기가 1마리라면 그 물고기를 먹으러 이동한다. 여러 마리라면 가장 가까운 순으로 먹는다. 거리가 같다면 위쪽, 왼쪽 순으로 먹으러 이동한다. bfs를 이용하여 먹을 수 있는 물고기에 대해 탐색을 진행하여 그 좌표와 거리를 저장한다. 2. 탐색이 끝나면 조건에 맞게 먹을 수 있는 물고기 리스트를 정렬한다. 먹을 수..
[boj] 백준 17779 게리맨더링2 (Java) - 시뮬레이션 [문제] https://www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름 www.acmicpc.net [풀이] 1. 모든 가능한 r, c, d1, d2 에 대해서 완전 탐색해야 한다. 4중 for문을 돌며 범위를 초과하지 않는 r, c, d1, d2에 대해서 경계선에 의해 만들어지는 사각형의 4가지 꼭짓점을 설정해주도록 한다. 꼭짓점은 (r, c)를 0으로 반시계 방향으로 회전하며 0, 1, 2, 3 번 꼭짓점으로 설정하였다. 2. 경계선을 그려준 후, 각 선거구마다 인구의 합을 구한 후 정렬..
[boj] 백준 17825 주사위 윷놀이 (Java) - 시뮬레이션 [문제] https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net [풀이] https://stritegdc.tistory.com/220 [boj] 백준 17825 주사위 윷놀이 (c++) - DFS, 시뮬레이션 [문제] https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 첫째 줄에 주사위에서 나올 수 10개가 순서대로 주어진다. www.acmicpc.net [풀이] 1. 윷놀이 판을 위와 같이 새롭게 세팅해준다. 윷놀이 판에 stritegdc.tistory.com 말 판은 하드코딩했기 때문에 인덱스가 달라짐. [코드] import ja..
[boj] 백준 20057 마법사 상어와 토네이도 (Java) - 시뮬레이션 [문제] https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net [풀이] https://stritegdc.tistory.com/216 [boj] 백준 20057 마법사 상어와 토네이도 (c++) - 시뮬레이션 [문제] https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습..
[pro] 프로그래머스 level3 60059 자물쇠와 열쇠 (Java) - 시뮬레이션 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/60059 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 이 문제의 핵심은 lock의 좌표를 확장해야 한다는 것...! lock 배열의 크기를 벗어나게 자물쇠를 채워도 된다. 따라서 lock의 좌표가 다음 그림과 같이 확장 가능하다. lock.length + (key.length-1)*2 원래의 lock을 새로 만든 new lock에 옮긴 다음, 회전을 시켜가며 key로 자물쇠를 채울 수 있는지 확인한다. key로 자물쇠를 채울 수 있..
[pro] 프로그래머스 level3 49189 가장 먼 노드 (Java) - 다익스트라 [문제] https://school.programmers.co.kr/learn/courses/30/lessons/49189 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 다익스트라를 이용해서 풀었다. [코드] import java.util.*; class Solution { List graph = new ArrayList(); int[] dist; public int solution(int n, int[][] edge) { int answer = 0; //1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지 //1번 노드로부터 -> 모든 노드에 대..
[pro] 프로그래머스 level3 43164 여행경로 (Java) - DFS [문제] https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] DFS 문제. 여러 경로가 나오면 사전순으로 정렬 후 첫번째 경로를 반환한다. [코드] import java.util.*; class Solution { List list = new ArrayList(); boolean[] used; public String[] solution(String[][] tickets) { String[] answer = {}; //방문하는 공항 경로를..
[pro] 프로그래머스 level3 70130 스타 수열 (Java) [문제] https://school.programmers.co.kr/learn/courses/30/lessons/70130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 먼저 수열에 나오는 숫자의 빈도수를 카운트 해준다. 스타 수열이 충족해야 하는 조건 3가지 중, 가장 길이가 긴 스타 수열을 반환하는데 영향을 미치는 조건은 교집합의 원소의 개수가 1 이상이라는 조건이다. 0~n-1 까지의 숫자 x에 대해서 수열의 index를 이동시켜가며 index, index+1 의 숫자가 다르고, 숫자 x가 교집합으로 등장하는지를 확인해준다. 모든 조건을 만..