Problem Solving/Programmers
[프로그래머스, 12981] 영어 끝말잇기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 74.4 MB, 시간: 0.15 ms사용 알고리즘: 문자열 import java.util.*;class Solution { public int[] solution(int n, String[] words) { int[] answer = new int[2]; // 나왔던 단어를 담아두는 set Set isUsed = new HashSet(); ..
[프로그래머스, 12919] 서울에서 김서방 찾기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12919 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 79.9 MB, 시간: 13.97 ms사용 알고리즘: 문자열 class Solution { public String solution(String[] seoul) { String answer = ""; for(int i = 0; i
[프로그래머스, 42894] 블록 게임 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42894 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 74.1 MB, 시간: 0.90 ms사용 알고리즘: 구현 먼저 블록의 타입 12개의 모양을 위 -> 아래, 왼쪽 -> 오른쪽 순으로 blocks 배열에 정보를 담는다.그리고 처음 발견한 블록에 대해 그 블록이 어떤 타입인지 구할 수 있도록 한다. 또한, 1-1, 1-2, 2-1번 등의 블록은 구조 상 절대 검은 블록을 채워 직사각형 모양을 만들 수 없다.(위에서부터 밑으로 검은 블럭을 떨어뜨려..
[프로그래머스, 64064] 불량 사용자 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 98.7 MB, 시간: 29.14 ms사용 알고리즘: 비트 마스킹, 자료구조, 조합, 문자열 하나의 banned_id에 대해 모든 user_id를 확인하며 가능한 user_id 목록을 구한다.(user_id와 banned_id는 최대 8개의 아이디를 가지고 있고, 각 아이디는 최대 길이 8이므로 충분히 가능) banned_id의 각 아이디에 대칭될 수 있는 user_id 목록은 구했으므로, 가..
[프로그래머스, 12953] N개의 최소공배수 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12953 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 80.3 MB, 시간: 45.88 ms사용 알고리즘: 완전 탐색 arr의 최대 길이가 15이므로 arr 중 최댓값부터 + 1 씩 모든 수를 검사하며 최소공배수를 찾는다.class Solution { public int solution(int[] arr) { // arr에서 가장 큰 수 찾기 int maxNum = 0; for(int a ..
[프로그래머스, 12912] 두 정수 사이의 합 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12912 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.1 MB, 시간: 17.35 ms사용 알고리즘: 구현 class Solution { public long solution(int a, int b) { long answer = 0; // a와 b 중 더 작은 수를 a에 저장 if(a > b) { int tmp = a; a = b; ..
[프로그래머스, 12983] 단어 퍼즐 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12983 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 54.3 MB, 시간: 45.78 ms사용 알고리즘: BFS 만들고자 하는 문자열을 char 배열로 바꾸고,0번 인덱스부터 사용할 수 있는 단어 조각을 찾는다. 사용할 수 있는 단어 조각이 있다면,해당 단어 조각을 사용했을 때의 길이(다음으로 확인해주어야 하는 인덱스)와사용한 단어 조각 개수를 배열에 담아이어서 붙일 단어 조각을 찾을 대기열인 큐에 넣어준다. 단, n개의 단어 조각 조합으로 i..
[프로그래머스, 12971] 스티커 모으기(2) (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 60.5 MB, 시간: 18.85 ms사용 알고리즘: 다이나믹 프로그래밍 현재 스티커를 뜯는 경우 중 최대값(dp[i][1])과 뜯지 않는 경우 중 최대값(dp[i][0])을 담은 dp 배열을 만든다.0번 스티커부터 차례대로 스티커를 뜯는 경우를 구해주는데, 현재 스티커를 뜯을 거라면 앞 스티커는 뜯지 않은 상태여야 한다.dp[i][1] = dp[i - 1][0] + sticker[i] 현재 ..
[프로그래머스, 12914] 멀리 뛰기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 80 MB, 시간: 0.21 ms사용 알고리즘: 다이나믹 프로그래밍 i칸으로 이동하는 방법은i - 1칸에서 1칸 뛰는 방법과i - 2칸에서 2칸 뛰는 방법이 있다.dp[i] = dp[i - 1] + dp[i - 2]class Solution { static final int MOD = 1_234_567; public long solution(int n) { ..
[프로그래머스, 12928] 약수의 합 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12928 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 72.4 MB, 시간: 0.09 ms사용 알고리즘: 구현 class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i