programmers

    [프로그래머스, 70129] 이진 변환 반복하기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 81.8 MB, 시간: 28.84 ms사용 알고리즘: 구현import java.util.*;class Solution { public int[] solution(String s) { int[] answer = new int[2]; char[] tmp = s.toCharArray(); // 문자열을 char 배열로 변환 Queue q = ..

    [프로그래머스, 12931] 자릿수 더하기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12931 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 77.3 MB, 시간: 0.03 ms사용 알고리즘: 문자열import java.util.*;public class Solution { public int solution(int n) { int answer = 0; while(n > 0) { answer += n % 10; n /= 10; } retu..

    [프로그래머스, 42897] 도둑질 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 109 MB, 시간: 45.15 ms사용 알고리즘: 동적계획법(Dynamic Programming) 이 문제를 해결한 기본적인 아이디어는,dp 배열에 i번째 집을 털었을 때의 최댓값, i번째 집을 털지 않았을 때의 최대값을 저장한다.i번째 집을 털기 위해선 이웃한 집을 털 수 없으므로 무조건 i - 1번째 집을 털지 않았을 경우의 최대값을 가져와야 하고i번째 집을 털지 않으면, i - 1번째 ..

    [프로그래머스, 12927] 야근 지수 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 86.4 MB, 시간: 217.07 ms사용 알고리즘: 자료구조 무조건 작업량이 많은 작업의 크기를 줄이는 것이 유리하다.따라서 PriorityQueue에 내림차순으로 정렬하여, 현재 작업량이 가장 많이 남은 작업을 꺼내서 1씩 처리하는 과정을 n번 거치면 최소값을 구할 수 있다.import java.util.*;class Solution { public long solution(int ..

    [프로그래머스, 12951] JadenCase 문자열 만들기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12951 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 74.1 MB, 시간: 0.08 ms사용 알고리즘: 구현 처음엔 StringTokenizer로 공백 기준 문자열을 나눠 첫 문자는 대문자로, 다음 문자들은 소문자로 바꿔주었는데, 여러 테스트케이스가 통과하지 않았다.문제를 다시 읽어보니 공백문자가 연속해서 나올 수 있다는 조건이 있었다.다시 풀 때는 StringTokenizer로 문자를 나누지 않고, 앞에 공백이 있을 경우 한 단어의 첫 문자로..

    [프로그래머스, 12954] x만큼 간격이 있는 n개의 숫자 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12954 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 73.6 MB, 시간: 0.05 ms사용 알고리즘: 구현class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; answer[0] = x; for(int i = 1; i

    [프로그래머스, 43162] 네트워크 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 93.4 MB, 시간: 0.45 ms사용 알고리즘: 유니온 파인드 먼저 유니온 파인드로 네트워크들을 모두 연결해 준다.이후 유니온 파인드에서 사용한 parent 배열을 순회한다.어느 한 네트워크에서 최고 조상인 parent[i] == i를 찾는다면 answer++ 해준다.class Solution { static int[] parent; public int soluti..

    [프로그래머스, 12941] 최솟값 만들기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 53 MB, 시간: 2.15 ms사용 알고리즘: 정렬 최솟값을 구해야 하므로 A에서 뽑을 수 있는 가장 작은 수는 B에서 뽑을 수 있는 가장 큰 수와 곱하는 것이 유리하다.따라서 두 배열을 오름차순으로 정렬한 후에, A는 맨 앞부터 B는 맨 뒤부터 하나씩 곱하여 더해준다.import java.util.*;class Solution{ public int solution(int []A, in..

    [프로그래머스, 12925] 문자열을 정수로 바꾸기 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/12925 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 77.2 MB, 시간: 0.04 ms사용 알고리즘: 문자열 Integer 메소드 사용class Solution { public int solution(String s) { return Integer.parseInt(s); }}직접 구현class Solution { public int solution(String s) { int answer..

    [프로그래머스, 43105] 정수 삼각형 (java)

    https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr메모리: 61.2 MB, 시간: 9.99 ms사용 알고리즘: 동적계획법 (Dynamic Programming), DFS dfs로 왼쪽 대각선으로 갔을 경우와 오른쪽 대각선으로 갔을 경우 중 더 큰 경우를 선택한다. 그런데 자신의 왼쪽에 있던 노드가 오른쪽 대각선으로 가는 경우와 자신이 왼쪽 대각선으로 가는 경우가 동일하니, 앞에서 이미 경우의 수를 구해놨다면 다시 구하지 않고 미리 저장해 둔 값을 사용..