Seren dev's blog
article thumbnail
[프로그래머스] Lv.2 : 전력망을 둘로 나누기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 인접리스트로 그래프를 생성한 후, 완전탐색을 사용하여, 각 전선이 끊어진 경우의 두 전력망의 송전탑 개수의 차이를 구한다. 하나의 전력망의 송전탑 개수는 BFS를 사용하여 구한다. 코드 import java.util.*; class Solution { public int solution(int n, int[][] wires) { // 인접리스트로 그래프 생성 LinkedList[] graph..

article thumbnail
[프로그래머스] Lv.2 : 피로도 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 순열(DFS) 던전을 탐험할 수 있는 모든 경우를 구하고, 탐험한 던전 수를 구한다. 탐험한 던전 수가 모든 던전의 개수와 같다면 더 이상 탐색하지 않는다. 던전을 탐험할 수 있는 모든 경우는 순열(DFS)을 사용하여 구했다. 코드 class Solution { static int size; static int[] pm; static boolean[] check; static boolea..

[프로그래머스] Lv.2 : 카펫 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 노란색 격자의 가로/세로 길이가 될 수 있는 모든 경우를 구한 다음, (노란색 가로 + 2) * (노란색 세로 + 2) - 노란색 개수 = 갈색 개수 가 되는 경우를 찾아서 답을 구한다. 코드 class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; for (int i = 1; i

article thumbnail
[프로그래머스] Lv.2 : 전화번호 목록 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 phone_book을 정렬한 다음, 인접한 두 개의 전화번호끼리만 접두어가 되는지 판별한다. 코드 import java.util.*; class Solution { public boolean solution(String[] phone_book) { Arrays.sort(phone_book); for (int i = 0; i < phone_book.length - 1; i++) { if (ph..

article thumbnail
[프로그래머스] Lv.2 : 위장 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조합을 사용한 풀이 - 실패 HashMap을 사용하여 옷의 종류를 Key, 옷의 가짓수를 Value에 저장한 다음, 조합을 사용하여 모든 경우의 수를 구하였다. 옷의 종류가 n개가 있을 때, 한 종류의 옷만 입은 경우, 두 종류의 옷을 입은 경우, ... n개의 종류의 옷을 입은 경우의 수를 모두 더하여 답을 구했다. 하지만 테스트 1에서 시간초과가 나서 실패했다. import java.util...

article thumbnail
[프로그래머스] Lv.1 : 완주하지 못한 선수 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 ArrayList를 사용한 풀이 - 효율성 문제 completion 배열의 요소를 ArrayList에 담은 후, for문을 사용해 participant의 각 요소에 대하여 list에 있는지 확인한다. import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { Arr..

article thumbnail
[프로그래머스] Lv.1 : 숫자 문자열과 영단어 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 enum 클래스 NumStr를 생성하여 대응되는 영단어와 숫자를 저장하고, replace() 메서드를 사용하여 영단어 NumStr.str부분을 숫자 NumStr.num으로 치환한다. 코드 import java.util.*; class Solution { static public enum NumStr { ZERO("zero", 0), ONE("one", 1), TWO("two", 2), THREE("three", 3), FOUR("four", 4), FIVE("five", 5), SIX("six", 6),..

article thumbnail
[프로그래머스] Lv.2 : [1차] 뉴스 클러스터링 - 자바[Java]

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 입력으로 들어온 각 문자열에 대해 두 글자씩 끊어서 Map에 (글자쌍, 글자쌍이 현재 문자열에서 등장한 횟수)를 저장한다. 똑같은 문자열이 두 번 이상 등장할 수 있는데, 이후 교집합이나 합집합을 구할 때 두 문자열에서 공통적으로 등장하는 글자쌍인 경우, 각 문자열의 해당 글자쌍이 등장한 횟수가 필요하기 때문에 Map을 사용하여 글자쌍이 현재 문자열에서 등장한 횟수도 저장해야 한다. 그 다음 교집합 원소의 개수와 합집합 원소의 개수를 구해 답을 반환한다. 로직 1. convertStrToPair() 메서..

article thumbnail
[프로그래머스] Lv.2 : 튜플 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 튜플을 표현하는 모든 집합에 들어있는 각 숫자들의 개수를 세면 첫번째 예시의 경우 2는 4개, 1은 3개, 3은 2개, 4는 1개다. 즉, 개수가 많은 순대로 answer 배열에 저장하면 된다. 문자열 s에 저장되어있는 각 집합을 구한 후, 각 집합에 있는 숫자들을 구해서 숫자와 숫자가 등장한 횟수를 Map에 저장한다. 문자열 s는 "{{2},{2,1},{2,1,3},{2,1,3,4}}" 와..

article thumbnail
[프로그래머스] Lv.2 : 배달 (그래프 최단 경로 알고리즘) - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이1 : 다익스트라 - 순차 탐색, 인접 배열 최단 경로 알고리즘을 사용하여 1번 마을부터 각 마을까지의 최단 시간(경로)를 구해야 한다. 최단 경로 알고리즘이란 주어진 그래프에서 한 정점(노드)에서 다른 정점까지의 최단 경로를 구하는 알고리즘이다. 대표적인 최단 경로 알고리즘은 3가지가 있다. 다익스트라 알고리즘 (default, 가중치가 모두 양수 = 음수X) 벨만 포드 알고리즘 (dista..

article thumbnail
[프로그래머스] Lv.2 : 방문 길이 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 캐릭터가 지나간 길을 저장하는 Set 타입 변수를 사용하여 캐릭터가 처음 걸어본 길의 길이(Set의 크기)를 구한다. 길의 정보를 저장하기 위한 클래스 Line을 생성하고, Line은 시작점의 좌표와 도착점의 좌표 둘 다를 저장해야 하므로 int 형 변수 prevX, pervY, curX, curY를 필드 변수로 선언한다. 또한 Set형 변수 lineSet을 사용하므로 lineSet의 중복성..

article thumbnail
[프로그래머스] Lv.2 : 점프와 순간이동 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - BFS (실패) 처음에 문제를 보고 BFS로 풀려고 했다. 하지만 N이 10억 이하의 자연수이며 풀이 과정도 시간이 오래 걸리는 문제가 생겼다. 정확성 테스트는 모두 맞았지만, 효율성 테스트에서 메모리 초과/시간 초과로 모두 실패했다. 다음은 BFS를 사용한 테스트에서 실패한 코드다. import java.util.*; public class Solution { public int sol..