Seren dev's blog
[프로그래머스] Lv.2 : [3차] 방금 그 곡 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 멜로디를 포함하는 음악을 찾아야 하며 일치하는 음악이 여러개라면, 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다. 따라서 정렬을 위해 MusicInfo 자료구조를 생성하였다. static class MusicInfo implements Comparable { int time; String title; String recor..

[프로그래머스] Lv.2 : [3차] 파일명 정렬 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 정렬 기준 1. HEAD: 문자 사전 순, 대소문자 구분X 2. NUMBER: 숫자 오름차순, 012 = 12 3. HEAD, NUMBER 같으면 입력 순서 그대로 유지 -> 안정 정렬 n 0; i--) { for (int j = 0; j < i; j++) { if (isChange(files[j], files[j+1])) { String tmp1 = files[j]; files[j] = f..

[프로그래머스] Lv.2 : 오픈채팅방 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최종적으로 관리자가 보는 메시지는 유저가 들어오고 나간 기록이며, 유저의 최종적인 닉네임만 알면 된다. 따라서 들어오고 나가는 기록을 저장하고, 각 유저 아이디의 최종 닉네임을 저장해야 한다. 1. Enter, leave: 들어오고 나가는 것 Enter : uid, true leave : uid, false => ArrayDeque inOutRecords: 맨 뒤에서 삽입 연산과, 처음부터 ..

article thumbnail
[백준] 20057번 : 마법사 상어와 토네이도 - 자바[Java]
Algorithm 문제 풀이/백준 2023. 10. 11. 17:49

https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 풀이 토네이도는 좌향부터 시작해서 좌, 하, 우, 상 순서대로 방향을 바꾸고, 1칸, 1칸, 2칸, 2칸... n-2칸, n-2칸, n-1칸, n-1칸, n-1칸을 이동한다. 즉, 각 칸 수마다 2번 이동하고 마지막 n-1칸을 이동할 때는 3번 이동한다. 토네이도가 이동할 때마다 모래가 이동하는 위치와 비율을 3차원 배열을 통해 저장한다. // 방향: 좌, 하, 우..

article thumbnail
[백준] 21610번 : 마법사 상어와 비바라기 - 자바[Java]

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 풀이 격자마다 저장된 물의 양을 나타낼 int[][] map과 구름 위치를 저장할 큐 Queue clouds를 생성한다. Pair 클래스에 equals()와 hashCode()를 오버라이드한 이유는 이후에 설명하겠다. static class Pair { int x, y; public Pair(int x, int y) { this.x = x; this.y = y; } @Override pub..

article thumbnail
[백준] 1916번 : 최소비용 구하기(다익스트라) - 자바[Java]

https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 풀이 기본적인 그래프 최단거리 문제다. 그래프 최단거리 알고리즘으로는 다익스트라, 벨만포드, 플로이드-와샬이 있다. 1

article thumbnail
[백준] 15683번 : 감시 - 자바[Java]

https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicpc.net 풀이 완전탐색으로 CCTV의 방향이 될 수 있는 모든 경우의 수를 구하여 그 중 사각지대가 최소인 경우의 크기를 구하였다. 완전탐색(재귀)로 모든 경우의 수를 구하므로 다음 변수들을 전역변수로 선언하였다. - 사무실 크기 n, m - 사무질 정보를 저장하는 rooms[n][m]을 생성 - 사각지대의 최소 크기를 저장하는 minUnwatchRoomCnt를 64로 초기화 - CCTV의 번호..

article thumbnail
[백준] 17140번 : 이차원 배열과 연산 - 자바[Java]

https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 연산을 계속하면서 배열 arr과 행의 크기와 열의 크기가 변하고, 배열 arr의 크기는 100을 넘어갈 수 없으므로, 100x100 크기의 arr 배열과 rSize, cSize 전역 변수를 선언한다. 또한 정렬을 수행할 때, 각각의 수가 몇 번 나왔는지 파악하여 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러가지면 수가 커지는 순으로 정렬해야 하기 때문에 Data라는 자료구조..

article thumbnail
[백준] 17276번 : 배열 돌리기 - 자바[Java]

https://www.acmicpc.net/problem/17276 17276번: 배열 돌리기 각 테스트 케이스에 대해 회전 연산을 마친 후 배열의 상태를 출력한다. n줄에 걸쳐 각 줄에 n개의 정수를 공백으로 구분하여 출력한다. www.acmicpc.net 풀이 1 ≤ T ≤ 10 1 ≤ n 0 ≤ |d| / 45 ≤ 8 d O(T*n^2) 코드 import java.util.*; import java.io.*; public class Main { public static void main(St..

[프로그래머스] Lv.1 : 로또의 최고 순위와 최저 순위 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. win_nums와 lottos의 일치 개수를 구한다. 2. lottos의 0의 개수를 구한다. 3. 최소 순위는 일치개수, 최대 순위는 (일치 개수 + 0의 개수)로 구한다. 코드 import java.util.*; class Solution { public int[] solution(int[] lottos, int[] win_nums) { HashSet winNums = new Has..

article thumbnail
[프로그래머스] Lv.1 : 체육복 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 2

article thumbnail
[프로그래머스] Lv.1 : 실패율 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1