Seren dev's blog
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
[백준] 10816번 : 숫자 카드 2 - 자바[Java]
Algorithm 문제 풀이/백준 2022. 11. 17. 21:13

10816번: 숫자 카드 2첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,www.acmicpc.net 풀이Map을 사용하면 간단하게 풀 수 있지만, 이분 탐색으로도 풀 수 있다.다만 이 문제는 배열에 들어가있는 숫자의 개수를 구해야 하는데, 기본적인 이분 탐색 코드는 숫자의 위치(인덱스)만을 구할 뿐, 배열에 중복된 숫자가 있을 경우 숫자의 개수를 구하지는 못한다.그렇기 때문에 기본적인 이분 탐색 코드를 변형해서 중복된 숫자의 왼쪽 끝 위치(lower bound)와 오른쪽 끝 위치(upper bound)를 구해 중복된 숫자의 개수를 ..

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/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/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 skill_trees에 저장된 각 스킬 트리가 가능한 스킬트리인지 검사한 후 가능한 스킬트리의 개수를 출력해야 한다. 스킬트리가 가능한 스킬트리인지는 skill에 저장되어있는 스킬들의 순서를 통해 알 수 있다. 이를 위해 skill에 저장되어있는 스킬들의 순서를 통해 Map 타입 변수 skillMap을 선언해 (스킬 이름, 스킬 순서)를 저장한다. 이후 skill_trees에 저장된 각 스킬..