Seren dev's blog
article thumbnail
[백준] 14891번 : 톱니바퀴 - 자바[Java]

https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 문제에 주어진대로 구현하는 문제다. 톱니바퀴의 상태가 String으로 주어지므로, 톱니바퀴의 상태를 저장하는 String[] 배열을 생성한다. N극, S극은 각각 0, 1로 저장된다. 여기서 핵심 인덱스는 2, 6번이다. 메서드 lotateClock(): 방향이 1이면 시계방향 -> 7번이 0번으로, newStr의 1~7번 인덱스 = str.substring(0, 7) lotateCoun..

article thumbnail
[프로그래머스] Lv.2 : 쿼드압축 후 개수 세기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 분할정복 알고리즘을 사용했다. 코드 class Solution { static int oneCnt = 0; static int zeroCnt = 0; public int[] solution(int[][] arr) { divideConquer(0, 0, arr.length, arr); int[] answer = {zeroCnt, oneCnt}; return answer; } static voi..

[프로그래머스] Lv.2 : 택배상자 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 영재가 실어야 하는 택배상자는 크기가 모두 같으며 1번 상자부터 n번 상자까지 번호가 증가하는 순서대로 컨테이너 벨트에 일렬로 놓여 영재에게 전달됩니다. -> 주 컨테이너는 1번부터 n번까지 순서대로 전달되므로 큐 자료구조를 사용한다. 보조 컨테이너 벨트는 앞 뒤로 이동이 가능하지만 입구 외에 다른 면이 막혀 있어서 맨 앞의 상자만 뺄 수 있습니다(즉, 가장 마지막에 보조 컨테이너 벨트에 ..

article thumbnail
[프로그래머스] Lv.2 : 롤케이크 자르기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 롤케이크를 잘랐을 때, 왼쪽과 오른쪽 롤케이크에 포함된 토핑 가짓수가 같은 경우의 수를 구해야 한다. 1

[프로그래머스] Lv.2 : k진수에서 소수 개수 구하기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. n을 k진수 문자열로 변환 2. "0"을 기준으로 문자열 나누기 3. 각 문자열을 숫자로 변환 후, 그 숫자가 소수인지 판별하여 소수 개수를 카운트한다. 주의할 점 - n은 100만 이하이며 2진수 등으로 변환했을때 int 범위를 벗어날 수 있다. 따라서 Long.parseLong()을 사용해야한다. - 소수 판별 로직에서 for문 탈출 조건을 i * i

article thumbnail
[프로그래머스] Lv.2 : 주차요금계산 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산해야 한다. 이 때 차는 여러번 입출차를 할 수 있으므로, 각 차의 누적 주차 시간을 계산해서 최종적으로 요금을 계산해야 한다. 먼저 문제를 풀기위한 자료구조는 다음과 같다. 차 번호는 고유하므로 차 번호를 Key로, 차의 정보를 Value로 하는 Map을 생성한다. static class C..

article thumbnail
[프로그래머스] Lv.2 : 소수 찾기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 에라토스테네스의 체를 사용하여 소수를 구한다. notPrime[i] = false라면 i는 소수이다. 2. char[] words에 한 글자씩 순서대로 숫자를 저장한다. 3. 길이가 1 ~ words.length인 순열을 구해서 숫자를 만들고, 그 숫자가 소수인지 판별하여 개수를 카운트한다. 코드 class Solution { static boolean[] notPrime = new b..

[프로그래머스] Lv.2 : [1차] 프렌즈4블록 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 로직은 다음과 같다. 1. 2x2 로 배치된 블록 찾기 - char[][] map, boolean[][] check - 지우는 블록의 위치에 check[i][j] = true 2. 블록 지우기(중복 고려) + 지우는 블록의 개수를 세면서 해당 위치의 map을 'x'으로 변경 주의할 점 check[i][j] = false로 복구해야 한다. 3. 블록이 지워진 후 위에 있는 블록을 아래로 옮기기..

article thumbnail
[프로그래머스] Lv.2 : 더 맵게 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42626 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 우선순위 큐(PriorityQueue)를 사용하면 쉽게 풀 수 있는 문제다. 로직 1. 모든 음식의 스코빌 지수를 PriorityQueue에 넣는다. PQ를 사용하면 자동으로 스코빌 지수가 작은 순대로 정렬된다. 2. PQ의 크기가 2이상이라면 다음 과정을 반복한다. - pq.poll()을 통해 2개를 꺼낸다. - 첫번째가 K보다 크다면 flag = true로 변경하고 break - 새로운 ..

article thumbnail
[프로그래머스] Lv.3 : 베스트 앨범 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1 고유 번호가 작은 순대로) 이 때 장르에 속한 곡이 1곡이라면 1곡만 출력한다. 먼저 장르 이름을 key로 하는 HashMap이 필요하다. value에는 여러가지 값이 필요로 하는데, 각 장르에 포함된 모든 노래 재생 횟수와 각 노래마다 재생 횟수와 고유 번호를 저장해야 한다. 이를 위해 class Music과 Genre를 생성했다. Genre에 ArrayList 멤버를 생성해 각 장르에..

article thumbnail
[백준] 17144번 : 미세먼지 안녕! - 자바[Java]

https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 풀이 문제에서 주어진 대로 구현하면 된다. 주의해야 할 점 먼지를 확산시킬 때 순서 없이 모든 먼지 확산이 동시에 일어나 최종적인 결과를 map에 저장해야 했다. 따라서 먼지가 확산된 결과를 저장하는 2차원 배열 int[][] map을 생성하고, 확산하기 전 먼지의 위치와 양을 저장하는 자료구조 ArrayDeque dust를 따로 생성하였다. 따라서 먼지 확산 전 map은 모두 0으로 초기화되어..

article thumbnail
[백준] 16719번 : ZOAC - 자바[Java]

https://www.acmicpc.net/problem/16719 16719번: ZOAC 2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로 www.acmicpc.net 풀이 문자열의 길이는 최대 100자이므로 n startIdx) { startIdx = data.idx; check[data.idx] = true; print(check, str); } } // update startIdx // 마지막 위치부터 앞으로 가면서 문자가 체크되어있는지 연속적으로 확인한 후, 체크하지 않은 문자가 있을 시 break int i = list.size() - 1; f..