Problem Solving/Programmers
[프로그래머스, 12938] 최고의 집합 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 53.9 MB, 시간: 0.40 ms사용 알고리즘: 수학 집합의 모든 원소들이 수를 비슷하게 나눠가져야 곱했을 때 가장 큰 수를 얻을 수 있다.따라서 모든 원소들이 s를 n으로 나누었을 때 몫을 기본으로 가지고s를 n으로 나누었을 때의 나머지 값을 집합의 뒷 원소들이 1씩 나눠 갖는다.(answer 배열을 오름차순 정렬한 후 리턴해야 하기 때문에, 뒷 원소들을 +1 해준다.)import jav..
[프로그래머스, 12973] 짝지어 제거하기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 63 MB, 시간: 62.68 ms사용 알고리즘: 자료구조, 스택 문자열의 문자들을 하나씩 스택에 넣는다.만약 스택의 바로 위에 있는 문자가 현재 스택에 넣으려는 문자와 같다면, 알파벳이 2개 붙어있는 짝을 찾은 것이므로 pop을 통해 짝지어 제거하기를 해준다.그게 아니라면 해당 문자를 push 해준다.import java.util.*;class Solution{ public int..
[프로그래머스, 12934] 정수 제곱근 판별 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12934 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.8 MB, 시간: 0.06 ms사용 알고리즘: 수학 class Solution { public long solution(long n) { // n에 대한 루트 계산 long x = (long)Math.sqrt(n); // 다시 제곱 long tmp = (long)Math.pow(x, 2); ..
[프로그래머스, 12929] 올바른 괄호의 갯수 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12929 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 93.6 MB, 시간: 26.49 ms사용 알고리즘: 백트래킹, 완전 탐색 처음엔 괄호 모양에 따라 dp로 풀려고 했는데 예외가 너무 많은 것 같아서 포기n의 최대가 14라 $2^{14}$ 밖에 걸리지 않으므로 그냥 완전 탐색으로 풀었다.class Solution { static int n; static int answer; public int solution(i..
[프로그래머스, 12987] 숫자 게임 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 63.1 MB, 시간: 112.35 ms사용 알고리즘: 정렬 A와 B의 점수를 모두 오른차순으로 정렬한 후, A 배열을 순회하며 항상 최선의 경우를 찾는다.항상 최선의 경우란, 아직 출전하지 않은 B팀의 점수 중 현재 확인 중인 A팀의 점수보다 큰 수 중 가장 작은 점수가 출전하는 것이다.만약 그런 점수를 찾을 수 없다면, 아직 확인하지 않은 남은 A팀의 점수들도 찾을 수 없다는 뜻이므로 br..
[프로그래머스, 12945] 피보나치 수 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 75.6 MB, 시간: 2.59 ms사용 알고리즘: 다이나믹 프로그래밍class Solution { private static final int MOD = 1_234_567; public int solution(int n) { int[] dp = new int[n + 1]; // 피보나치 수를 저장할 dp 배열 dp[1] = 1;..
[프로그래머스, 12933] 정수 내림차순으로 배치하기 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12933 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 78.4 MB, 시간: 0.03 ms사용 알고리즘: 구현class Solution { public long solution(long n) { int[] count = new int[10]; // 인덱스에 해당하는 수가 몇 개인지 저장 while(n > 0) { count[(int)(n % 10)]++; n /=..
[프로그래머스, 64063] 호텔 방 배정 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 149 MB, 시간: 369.50 ms사용 알고리즘: 구현 map에 방 번호를 key로, key번 방을 선택했을 경우 배정해야 하는 방 번호를 value로 저장한다.key에 해당하는 값이 map에 없다면 아직 key번 방을 배정한 적이 없다고 간주하고 key번 방에 배정을 한 뒤,다음 방 번호인 key + 1을 value로 저장한다.만약 key가 map에 있다면, 이미 key번 방에 배정된 손..
[프로그래머스, 42898] 등굣길 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 51.9 MB, 시간: 0.99 ms사용 알고리즘: 동적계획법(Dynamic Programming) 처음 문제를 풀 때는 BFS로 풀었다.BFS로 사방탐색을 하는 것처럼 이방탐색을 해줬다.(오른쪽, 아래쪽으로만 이동이 가능하니 이방탐색) 정확성 테스트는 모두 통과할 수 있었는데 효율성 테스트는 모두 시간초과가 났다. 그래서 다른 방법을 고민해 봤는데, 생각해 보니 오른쪽, 아래쪽으로만 이동이..
[프로그래머스, 12924] 숫자의 표현 (java)
https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 52 MB, 시간: 0.54 ms사용 알고리즘: 투 포인터 투 포인터 l과 r을 두고, l부터 r까지 수의 합을 sum에 저장해둔다.sum이 n보다 작다면 r++을 통해 sum값을 키워준다.sum이 n보다 크다면 l++을 통해 sum값을 줄여준다.sum == n을 찾았다면 anwer++ 해준다.class Solution { public int solution(int n) { ..