일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 해결
- docker
- 해시맵
- 도커
- HashMap
- 이직
- Linux
- dfs
- bfs
- 주니어
- 자료구조
- 프로그래머스
- IntelliJ
- 백엔드
- 스프링 부트
- 배열
- 명령어
- 구름LEVEL
- Java
- 코딩테스트
- 스프링부트
- 개발자
- spring boot
- 인텔리제이
- 문자열
- 구현
- spring
- 스타트업
- 스프링
- HTTP
- Today
- Total
목록Java (45)
마이의 개발 블로그
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. 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..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 배열을 하나씩 잘라가며 양쪽의 토핑 종류 개수를 (토핑개수 x) 비교하는 문제이다. - 형(older)은 HashMap으로, 동생(younger)은 HashSet으로 선언 - topping 배열을 한 바퀴 돌며 older한테 전부 넣어주기 : put(토핑번호, 개수); - topping 배열을 한 바퀴 돌며 1) 해당 토핑을 older에서 1개 빼기 (1개 뺀 후 0개인 경우 키값 제거 필요함. 키의 개수가 size()로 잡히기 때문) 2) 해당 토핑을 younger에 넣어주기 3) older와 younger..