본문 바로가기

전체 글108

프로그래머스: 소수 찾기 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.
프로그래머스: 베스트앨범 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 처음에는 하나의 map만 사용해서 정렬을 하려고 했으나, HashMap을 두개 생성해서 장르 별 플레이된 횟수를 저장하는 방식을 택했다. Map map = new HashMap(); // 장르별로 음악 정보(고유 번호: 플레이횟수) 저장 Map genre = new HashMap(); // 장르별 플레이 횟수 저장 for(int i = 0; i 2023. 10. 17.
프로그래머스: k진수에서 소수 개수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/92335 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이 문제의 제한사항을 보면 1 2023. 10. 11.
프로그래머스: 실패율 https://school.programmers.co.kr/learn/courses/30/lessons/42889 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 문제가 어렵지는 않은데 복잡하게 푼 것 같아 잘 정리된 풀이식을 정리한다. 1부터 N 스테이지까지 반복문을 돌면서 total(스테이지에 도전한 플레이어 수), fail(스테이지를 클리어하지 못한 플레이어의 수)을 구한다. 도전한 플레이어가 없다면 total을 영어로 하고, 실패율을 계산해 해당 스테이지에 넣어준다. stage에 대한 map이 완성되었다면, 비교를 통해 가장 큰 수를 찾는다. .. 2023. 10. 10.