프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 문제를 잘 읽자 문제가 꽤 길어서 혼을 쏙 빼놓는데, 난이도는 그렇게 어려운 편은 아니었다. 판매원 클래스를 하나 따로 만들어서 자기 조상을 참조하도록 해놓고 이를 쭉 타고타고 올라가면서 수익금을 분배하면 된다. 더이상 분배할 수익금이 없는 경우 / 조상이 더이상 없는 경우의 예외 케이스만 추가로 고려해주면 된다 # 더 이상 분배할 수익금이 없는 경우 분배금은 90%는 내가 갖고, 10%를 조상에게 떼주면 되는데. 내가 가질 금액: Math.ceil(profit * 0.9) int 형변환 시 알아서 ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 1. 날짜 포맷을 숫자로 변환하기 2. 구간 체크 # 날짜 포맷을 숫자로 변환하는 방법 1. String을 ":" 기준으로 split 한 다음 각각 더하기 public long getMilSecByString(String time) { long val = 0; String[] split = time.split(":"); val += (Long.parseLong(split[0]) * 60 * 60); // 시 val += (Long.parseLong(split[1]) * 60); // 분 val *= ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr # 핵심 이분 탐색을 이용한다 left = 0, right = 최소 심사 시간 * 인원수 로 세팅한 이후 mid = (left + right) / 2 -> mid 시점에서 각 심사관들이 총 몇 명을 처리할 수 있는지를 계산하여 시간이 mid보다 더 필요한지, 혹은 덜 필요한지를 확인!! --> availableCnt += (mid / time) # 처음으로 통과한 코드 import java.util.*; class Solution { public long solution(long n, int[] times) ..
>문제 너무 길다 생략! www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net > 핵심 탐색 알고리즘 (이분탐색) >풀이과정 맨 처음에 그냥 문자열 배열으로 주욱 입력받은 다음에 이중반복문으로 뺑뺑이 돌리려고 했는데 시간초과가 나서 방법을 수정해야 했다.. O(n^2)보다 빠른 탐색 방법이라면 이분탐색(O(logn))이 쉽고 대표적이기에 이분탐색을 사용했다. 이분탐색을 사용하려면 우선 배열이 정렬되어있어야 하므로 list외에 추가로 s..
>문제 www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 www.acmicpc.net > 핵심 DP 혹은 이중반복문 >풀이과정 이중 반복문을 돌려서도 시간초과 없이 풀어진다 다만 DP로 푸는것이 시간복잡도 면에서 훨씬 효율적인 알고리즘이라 할 수 있겠다 >깨달은점 DP는 아직 어렵다 근데 풀다보니까 뭔가 느낌은 오는 것 같다. 아직 더 많이 풀어봐야할듯 >코드 #define _CRT_SECURE_NO_WARNINGS #include double dp[10002]; int ma..
>문제 www.acmicpc.net/problem/17626 17626번: Four Squares 라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 52과 12의 합이다; 또한 42 + 32 + 1 www.acmicpc.net > 핵심 DP 아니면 삼중반복문 >풀이과정 어려웠다. 어떻게 풀어야하나 도통 생각이 안나서 그냥 반복문을 돌려서 어거지로 풀었는데 나는 DP로 풀고싶었다. 근데 도저히 생각이 안나서 다른사람 아이디어를 보고나서야 DP 방식이 이해가 됐다. dp 배열에는 제곱수를 표현하는 최소 개수가 들어간다. dp[0] = 0, dp[1] = 1으로 초기화. 그리고 반복문을 돌면서 d..
>문제 www.acmicpc.net/problem/9655 9655번: 돌 게임 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net > 핵심 규칙찾기 >풀이과정 처음에 보고 와 막막하다.. 생각했는데 경우의 수를 적어보다 보니까 매우 쉬운 규칙성을 발견해서 아주 쉽게 풀 수 있었다;; 그 규칙은 A, B 순서대로 돌을 가져간다고 했을때 돌의 개수가 짝수이면 반드시 A가 이기고 돌의 개수가 홀수이면 반드시 B가 이긴다. 돌을 한개 가져가나 세개 가져가나 A는 반드시 짝수 위치에 오게 되므로 돌의 개수가 짝수이면 반드시 A가 이기는 게임인것이다 베스킨라빈스 31 게임을 할때도 1개와 3개 중에서 뽑아갈 수 있다고 조건을 건다면 나중에 시작하는 사람이 반드시 ..