본문 바로가기

개발자 취업

[프로그래머스] 선입선출 스케줄링 java 문제 풀이 1. 문제 설명문제 링크처리해야할 작업의 양: n코어의 개수와 코어마다 일을 처리하는데 걸리는 시간 : int [] cores맨 마지막에 일을 끝내는 코어의 번호를 구하라. (번호는 1부터 시작한다.)2. 접근 방식KEY WORD: binary_search이분탐색으로 n의 작업량 이상의 처리를 하는 시간대 중 가장 작은 시간대(k)를 구한다.(n = 15라고 하자. 시간별로 짤랐을 때, 16이 가장 가까운 수 이다.)코어의 맨 마지막 자리부터 k 시간대 일을 하는 녀석을 하나하나 제외시켜가면서 맨 마지막으로 n번째 일을 처리한 코어를 구하고 번호를 출력한다.9시간째에서는 1번 코어와 2번코어만 일하며 16번째인 2번 코어를 제외하면 1번코어가 target값인 15를 처리하는 마지막 코어이다. 그래서 답은.. 더보기
[백준] 6064 카잉 달력 java 풀이 1. 문제 설명문제 링크이란 달력이 있는데, (x,y) -> (1,1) , (2,2) 가다가 x가 M을 넘거나, y가 N을 넘으면 다시 1로 돌아온다.예제에 설명되어 있는 대로, 일때, 13번째 년도는 이 된다. , , , 순으로 온다.문제에서 M,N,x,y를 줄 때, 달력에서 가 몇 번째 년도인지 구하라.2. 접근 방식이것도 도저히 생각이 안나서 다른 사람 풀이 봤다. (요즘 왜 이렇게 풀이가 생각이 안나지? 더 열심히 해야겠다.)KEY WORD: 유클리드 호제법, LCM과 GCD의 관계먼저 ~ 까지 순서대로 번호를 매긴다고 해보자. 이때 우리가 구해야하는 는 K번째 수라고 해보자.x는 K를 M으로 나누었을 때의 나머지이고, y는 K를 N으로 나누었을 때 나머지 이다.에서 는 33번째 수인데,.. 더보기
[프로그래머스] n*2 배열 자르기 문제 풀이 java 1. 문제 설명문제링크2차원 배열의 값을 집어넣고, 그것을 1차원 배열로 늘어뜨려서, 문제에서 원하는 구간 내의 숫자들을 묶어서 반환하는 문제이다.2. 접근 방식KEY WORD: Brute Force, 1차원 배열과 2차원 배열의 위치 관계해당 문제는 n의 maximum이 10^7이므로, O(n)을 초과하는 시간 복잡도를 사용하지 못한다. 따라서 2차원 배열에 값을 다 집어넣고, 그것을 1차원으로 만드는, 마치 문제에서 지시한대로는 풀이를 하지 못한다. 또한 1차원 배열을 바로 만들더라도, n*n은 배열의 메모리를 초과하는 값을 초래할 수 있기 때문에 1차원 배열 전체를 만드는 것도 무리다.따라서 우리는 정확히 left ~ right 까지의 배열을 만들어 값을 구해 반환해야 한다.(1) 1차원 배열 2.. 더보기
99클럽 코테스터디 31일차 TIL + [프로그래머스] 네크워크 java 풀이 1. 문제 설명문제 링크서로 연결되어 있는 그래프를 하나의 군집체로 볼 때, 주어진 전체 노드에서 군집체가 총 몇 개 있는지 구하는 문제이다. 2. 접근 방식인접 리스트 형태로, 노드와 연결 정보를 저장한다. 방문 배열을 만들고 방문하지 않은 배열을 기점으로 BFS를 실행한다.한 번 BFS를 돌면, 시작 정점과 연결된 모든 정점은 방문 처리가 될 것이다. 이는 하나의 군집체를 조회한 걸로 볼 수 있다. 따라서 BFS를 돈 횟수만큼 군집체가 존재하는 것이므로, BFS를 실행한 횟수를 반환하면 된다.3. 코드 분석import java.io.*;import java.util.*;class Solution { public int solution(int n, int[][] computers) { .. 더보기
99클럽 코테 스터디 29일 TIL + [LeetCode] maximum-profit-job-scheduling 풀이설명 1. 문제 설명문제 링크(1) 일거리의 시작 시간, 끝 시간, 일을 끝냈을 때의 이익 이 주어진다.(2) 시작 시간과 끝 시간의 범위가 겹치는 일은 같이 하지 못한다. 반면 어떤 일이 끝나자마자 다른 일은 시작할 수 있다.예를 들어, job A의 끝 시간이 3시 이고 job B의 시작시간이 3시이면 두 일 거리는 연달아 할 수 있다. 반면 job C가 3~5시이고 job D가 4~6시이면 두 일은 일의 시간 범위가 겹치므로 같이하지 못한다.(3) 이때, 겹치지 않게 일을 해서, 최대 이익을 얻으려고 한다. 주어진 일거리들 중에서 가질 수 있는 최대 이익은 몇인가?2. 접근 방식KEY WORD: DP(1) 주어진 문제가 시작시간, 끝시간, 이익을 따로 따로 주기에 이를 하나의 일(job) 단위로 하나로 묶.. 더보기
99클럽 코테 스터디 28일차 + [백준] 1874 스택 수열 java 풀이 1. 문제 설명문제 링크2. 접근 방식KEY WORD: DATA STRUCTURE(0) 현재 조회 중인 수를 value, 출력해야 하는 수를 now라고 해보자.(1) value (2) stack의 top과 now를 비교한다.(3) top이 크면 어떤 방법을 써도 수열을 만들 수 없다. NO를 출력하자.(왜냐하면, 수열은 무조건 stack에서 pop되는 값으로 만들어야 하기 때문이다. stack에는 오름차순으로 값이 저장되기에, 현 stack의 top 값이 크다고 새로 push를 받으면 더 큰 값밖에 들어오지 않는다. stack의 top이 now보다 작을 때는 같은 값이 들어올 때까지 기다리면 되는 것과 상반된다.)(4) top == now 이면 stack에서 pop해서 값을 뺀다.Stack은 진짜 sta.. 더보기
99클럽 코테 스터디 26일차 TIL + [프로그래머스] 개인정보 수집 유효기간 풀이 1. 문제 설명문제 링크(1) 오늘이 몇년, 몇월, 며칠인지 알려주고, 개인정보의 유형별로 정보 보관 기간을 알려준다. (2) String 배열 형태로, 정보가 수집된 날짜, 개인정보의 유형이 주어질 때, 주어진 배열에서 오늘 파기될 정보가 무엇인지, 번호를 배열 형태로 반환하라. 2. 접근 방식KEY WORD: 문자열 자르기해당 문제의 입력은 다음과 같이 주어진다. todaytermsprivaciesresult"2022.05.19"["A 6", "B 12", "C 3"]["2021.05.02 A", "2021.07.01 B", "2022.02.19 C", "2022.02.20 C"][1, 3]"2020.01.01"["Z 3", "D 5"]["2019.01.01 D", "2019.11.15 Z", "2.. 더보기
99클럽 코테 스터디 25일차 TIL + [프로그래머스] 순위 두 가지 풀이 ✨ 1. 문제 설명문제 링크 2. 접근 방식KEY WORD: BFS생각 해야할 점: 하나의 정점이 자신의 위치를 안다는 것은 단방향 그래프에서 해당 정짐이 다른 모든 정점들과 서열를 가진다는 것이다. 이 때, 해당 서열은 간접적으로 파악이 되도 된다.간접적으로 파악된다는 것은 무슨 뜻인가?해당 그림은, 문제에서 예시로 주어진, 정점들간의 관계이다. 문제에서는 2번이 1,4,3번에게 패하고, 5번에게 이겼음으로 4등이라고 했다. 5번은 그 2번에게 졌음으로, 1,3,4번에게도 간접적으로 진 것이다. 따라서 2, 5번은 모든 정점에 대해서 서열을 가진다.(1) 단 방향 그래프를 두 개 만들기첫 번째 방법은 단 방향 그래프 2개 만들기 이다.우리의 핵심은, 현재 조회 중인 정점이 간접적으로라도, 모든 정점과 서열.. 더보기