일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- IntelliJ
- 자료구조
- 해결
- HashMap
- 인텔리제이
- bfs
- HTTP
- 구현
- 스프링 부트
- 프로그래머스
- docker
- 도커
- 해시맵
- 구름LEVEL
- 문자열
- 개발자
- 스타트업
- spring boot
- spring
- 주니어
- 스프링
- 배열
- 백엔드
- 코딩테스트
- 이직
- dfs
- 명령어
- 스프링부트
- Linux
- Java
- Today
- Total
목록코딩테스트/프로그래머스 (47)
마이의 개발 블로그
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 예전에 풀어놨던 문제인데 뒤에 있는 큰 수 찾기 문제와 관련하여 이제서야 기록을 남긴다. 스택/큐 문제로 분류되어있으나 반복문으로 풀어냈다. 로직 설명 - 배열 prices[]를 탐색하며: 각 가격 prices[i]의 뒤에있는 가격들을 탐색하여 span을 증가시킴 - 주식 가격이 떨어지는 경우 탐색을 중단하고 answer[i]에 span을 저장함 Note - 스택으로 풀었어도 될 문제이나 구현으로 풀어내는게 더 직관적이라는 생각이 든다. class Solution { public int[] solu..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방식 이중 반복문으로 테케는 풀렸으나 당연히 시간초과에 걸렸고, 스택으로 풀어야 해결된다는 힌트를 보고 몇 날 며칠을 고민했던 문제다. 다른 사람들의 접근법을 보고난 후에도 로직을 이해하기 위해 노력해야했는데 막상 이해하고나니 너무나 간단한 문제였다. 이런 유형에서 스택을 사용하는 이유는 탐색 도중 구간별 변화를 감지했을 때에만 그 구간에서의 결과값이 도출되기 때문이다. 즉, 구간별 변화(뒤에 나보다 큰 수가 존재하는 것)가 일어나지 않으면 결과값을 도출할 수 없고(-1), 변화가 감지되었을 때에만 탐색..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 동적 계획법(Dynamic Programming, DP) 문제이다. 처음에 DFS로 테스트 케이스를 풀어내긴 했는데 인풋 최대값이 100,000이다보니 실제 채점에서는 전부 통과되지 않아 DP로 바꾸어 풀게되었다. DP는 '기억하며 풀기'로 보통 바꾸어 말하는데 반복되는 문제에 대한 최적의 결과를 단계별로 메모리에 저장하고 이를 활용하여 다음 단계의 결과를 구하는 방식으로 사용한다. 여기서는 땅따먹기의 각 단계별로 직전단계까지의 최대값을 저장(또는 land에 바로 더해주기)하는 방식으로 DP를 구현했다. - ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 딱히 어려운 문제는 아니다보니 금방 해결되었다. - 알파뱃별 최소 클릭 숫자를 저장할 해시맵 선언 - keymap을 탐색하며 key의 최소 클릭수를 맵에 저장 - targets의 각 문자열을 탐색하며 1) (문자열의 알파뱃이 맵에 없는 경우) answer에 -1 저장 후 break 2) (문자열의 알파뱃이 맵에 있는 경우) 문자열의 각 알파뱃 최소 클릭수를 map에서 가져와 answer에 더하기 import java.util.*; class Solution { public int[] solution(Strin..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 난이도가 높은 문제는 아닌데 다른 사람 풀이 중에 너무 간단한 답변이 있어 기록을 남기려고 가져와봤다. - 두 수의 최대공약수를 구함 (gcd) - 기약분수로 만들기 위해 분모를 최대공약수로 나눠줌 - n = 2부터 시작하여 소인수분해(나머지가 0이면 계속 나눠주고 아니면 n 증가) - 나뉘는 숫자가 2나 5가 아닐 경우 무한소수이므로 2 리턴 Note - 이거 풀었다고 3점 주던데 프로그래머스 점수 산정 기준이 뭔지 모르겠다. - 아래는 내 답안 class Solution { public int soluti..