본문 바로가기

분류 전체보기111

프로그래머스: [1차] 다트게임 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 이 문제는 처음에 문제 풀이 과정을 이해하기 어려웠다. 주어진 예시를 가지고 구현 방법을 구체화했다. 나는 풀이 과정에서 - 값을 넣을 때 ArrayList를 사용하고 - 숫자인지 문자인지 확인하는 것을 if문을 사용해서 했으며 - 10을 확인하려고, strScore 변수를 따로 두고, S와 D와 T일 때마다 초기화해주었다. 더 나은 풀이를 발견해서 공부하려고 한다. 코드 stack을 이용.. 2023. 10. 25.
프로그래머스: 최고의 집합 https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음에는 제한 조건을 걸고 모든 집합을 구하려고 하였다. 하지만 가장 큰 원소의 곱의 합의 특징은 집합 내의 원소들의 값 차이가 크지 않다는 점이다. 따라서 원소의 합을 집합 개수로 나눈 몫을 구하고 나머지를 배열에 하나씩 넣어서 잡합 내의 원소 곱이 최대인 배열을 구할 수 있었다. 코드 class Solution { static int[] selected; static int target_.. 2023. 10. 24.
프로그래머스: 주식가격 https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 주식 배열을 0번째부터 확인한다. 증가한다면? stack에 주식(prices[i])와 넣는 시간(i)을 저장한다. 감소한다면? stack에서 값을 peek 해서 떨어졌는지 확인한다. 떨어졌다면? stack에서 pop하고 answer 배열에 해당 주식의 index에 (현재 시간 - 주식을 기록한 시간)을 저장한다. 가장 마지막에는 stack이 빌 때까지 값을 꺼내면서 answer 배열을 완성한.. 2023. 10. 20.
프로그래머스: 소수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 왜... 나는 완전탐색이 아직 서툰 것인가... 코딩테스트 보기전에 다시 한번 정리하고 간다. 코드 import java.util.*; class Solution { static Set numSet; static boolean[] visited; public int solution(String numbers) { int answer = 0; visited = new boolean[number.. 2023. 10. 20.
프로그래머스: 스티커 모으기(2) https://school.programmers.co.kr/learn/courses/30/lessons/12971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 이 문제는 dp로 풀 수 있다. 처음 이 문제를 풀었을 때는 현재 위치(i)에서 무조건 스티커를 떼고, i-2를 선택할지, i-3을 선택할 것인지 고민했다. 그리고 원형으로 연결된 것을 고려하여 가장 마지막에 있는 스티커와 가장 첫번째 스티커가 이어져있을 경우 제외하는 방식을 생각했다. 하지만 이렇게 풀이할 경우, 맨 앞에서부터 하니씩 확인하는 dp 문제 특성 상 가장 마지막에 있는 스티커와.. 2023. 10. 20.
프로그래머스: 입국심사 https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 이 문제를 풀 때, 입국 심사를 어디에 맞출 것인가를 고민하는 것이 아닌 현재 시간을 기준으로 최대 몇명이 마칠 수 있을 것인가에 초점을 맞추면 된다. minTime을 1이고, maxTime은 times 배열에서 가장 큰 수 * n명 => minTime이 times 배열의 가장 작은 수 * n으로 하면 안되는 이유는 동시에 입국 심사를 받을 수도 있기 때문!!! minTime과 maxTime.. 2023. 10. 19.
프로그래머스: 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 나의 처음 아이디어는 map을 이용해서 푸는 것이었다. key가 출발지가 되고, value는 도착지를 정렬해서 담고 있는 PriorityQueue이다. 그리고 매번 이동할 때마다, map에서 출발지를 찾고 도착지의 첫번째 원소가 이 다음 출발지가 되는 방식이다. 이런식으로 했을 때, 주어진 테스트 케이스는 통과되지만 다음 케이스같은 경우는 런타임에러가 발생한다. Parameters: [["I.. 2023. 10. 18.
프로그래머스: 단어 변환 설명 begin부터 시작하여 words 배열에 있는 원소를 탐색하면서 현재 자신 기준으로 알파벳 차이가 1개 나는 word를 찾는다. 찾으면 해당 word에서 탐색을 한다. => dfs 문제 코드 class Solution { static boolean[] visited; static int answer; public int solution(String begin, String target, String[] words) { answer = Integer.MAX_VALUE; visited = new boolean[words.length]; dfs(begin, target, words, 0); if(answer == Integer.MAX_VALUE) answer = 0; return answer; } voi.. 2023. 10. 18.
프로그래머스: 가장 큰 수 https://school.programmers.co.kr/learn/courses/30/lessons/42746# 설명 이 문제를 처음에 봤을 때, 숫자의 가장 상위에 있는 자릿수를 비교하여 정렬하려고 생각했다. 하지만 이 경우 3, 30, 34처럼 일의 자리 숫자와 십의 자리 숫자가 함게 있는 경우(즉 서로 다른 자릿수를 갖는다면) 이 다음 자릿수를 비교해야 한다. 따라서 이 문제는 숫자를 문자로 바꾸고 사전 정렬해서 풀면 된다. // 숫자들을 저장하는 String 배열을 만들어, 문자들을 숫자로 바꾸고 저장한다. String[] num = new String[numbers.length]; for(int i = 0; i < numbers.length; i++) { num[i] = String.valu.. 2023. 10. 18.