일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 가장 긴 증가하는 부분 수열2
- Adapater Pattern
- SerialDate 리펙터링
- 클린코드
- 자바의 정석
- Design Pattern
- 코딩 테스트
- 코딩테스트
- 9장
- 2206번
- 17장
- java
- 2156번
- 11286번
- 10830번
- 11758번
- 1043번
- 1300번
- 2166번
- DxTrace
- 프로그래머스
- java의 정석
- BOJ
- Design Patterns
- 냄새와 휴리스틱
- Spring
- springboot
- 백준
- Dxerr.h
- programmers
- Today
- Total
목록프로그래머스 (36)
Don't give up!
코딩테스트 연습 - 방문 길이 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 방문 길이 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 좌표에 대한 기억이 아닌 이동한 길을 기억해야 하는 문제이므로 지나온 길을 저장하고, 중복 확인을 하여 처음 걸어본 길의 길이를 반환할 수 있다고 생각하였습니다. 코드 import java.util.*; class Solution { public int solution(String dirs) { int x=0,y=0; HashSet set = new HashSet(); for(char c : dirs.toCharArray()){ if(c=='U' && y-5){ set.add(new Path(x,y,x,y-1)); y=y-1; ..
코딩테스트 연습 - 가사 검색 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 가사 검색 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? HashMap에 각 문자마다 검색될 수 있는 검색 쿼리를 미리 만들어 카운트를 추가함으로써 문제를 해결할 수 있을 것이라고 생각하였지만 호율성 테스트에서 실패하였습니다. 각 문자마다 길이x2-1개의 쿼리가 존재할 수 있기 때문에 상당히 많은 수의 키 값이 HashMap에 삽입되고, 이를 탐색하는 과정에서 많은 시간이 필요합니다. 문제에서 와일드카드 문자 '?'는 중간에 삽입되거나 양쪽에 존재하거나 존재하지 않는 경우는 고려하지 않습니다. 따라서 ?문자들이 접미사로 붙거나 접두사로 붙는 경우만 존재하므로 공통되는 알파벳 순서를 갖..
코딩테스트 연습 - 자물쇠와 열쇠 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 어떻게 생각하고 문제를 풀었는가? MxM 배열의 키는 회전이 가능하고 이동할 수 있습니다. 주어진 예시에서 알 수 있듯, 이동한 키의 원소 중 하나라도 자물쇠의 원소와 비교할 수 있다면 키의 역할을 수행할 수 있습니다. 주어진 조건에서 키 배열의 크기 M은 항상 자물쇠 배열의 크기 N 이하입니다. 따라서 키 배열의 마지막 열/행이 자물쇠 배열의 첫번째 열/행과 비교되는 케이스부터 키 배열의 첫번째 열/행이 배열의 마지막 열/행..
코딩테스트 연습 - 광고 삽입 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 문제에서 주어진 예시처럼 광고 삽입이 가능한 구간들 중에서 시청자들의 누적 재생시간이 가장 큰 구간을 찾아야 합니다. 누적 재생시간을 구하기 위해서 구간 내 시청자들의 수를 더하는 방법을 생각하였는데, 가능한 재생 구간이 초단위로 존재할 수 있고 각 재생 구간마다 시청자들의 수..
코딩테스트 연습 - 합승 택시 요금 | 프로그래머스 (programmers.co.kr) 어떻게 생각하고 문제를 풀었는가? 지점 k에서 A와 B가 택시를 따로 이용하여 목표지점으로 가는 경우 s->k까지의 최소비용 + k->A까지의 최소비용 + k->B까지의 최소비용으로 계산할 수 있습니다. 택시요금은 방향에 따라 달라지지 않습니다. 따라서 s에서 시작하여 각 지점까지의 최소비용, A에서 시작하여 각 지점까지의 최소 비용, B에서 시작하여 각 지점까지의 최소 비용을 미리 계산한 후 모든 k에 대한 비용 중 최소 값을 찾음으로서 전체 최소요금을 구할 수 있습니다. 코드 import java.util.*; class Solution { final int MAX = 20000001; int[][] lines; ..
코딩테스트 연습 - 디스크 컨트롤러 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 주어진 작업들 중 소요시간이 짧은 작업을 먼저 수행하는 그리디 알고리즘으로 문제를 해결할 수 있을 것이라고 생각하였습니다. 작업의 수행은 LIFO의 자료구조인 Queue를 사용하고자 하였고, 작업 수행시간에 따른 정렬을 수행할 수 있는 PriorityQueue를 이용하는 것이 좋다는 생각을 하였습니다. 코드 import java.util..
코딩테스트 연습 - 다단계 칫솔 판매 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 다단계 피라미드 구조를 LinkedList의 구현을 통해 만들고, 부모 노드로 이익의 10%를 전달하는 클래스 함수를 만듦으로서 문제를 해결할 수 있습니다. 주어진 입력은 i번째 판매원의 이름과 부모 판매원의 이름 그리고 i번째 판매 데이터에 저장된 판매원 이름과 판매량입니다. 판매원 이름을 Key 값으로 하는 HashMap을 사용하면..
코딩테스트 연습 - 네트워크 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 어떻게 생각하고 문제를 풀었는가? 연결된 네트워크의 수를 구하기 위해 DFS를 사용하였습니다. 0번 컴퓨터부터 네트워크에 연결되있지 않다면 새로운 네트워크에 추가하고, 연결 가능한 컴퓨터를 순회하면서 네트워크의 연결을 수행함으로서 네트워크의 수를 구할 수 있겠다고 생각하였습니다. 코드 import java.util.*; class Solution { public int solu..