Seren dev's blog
article thumbnail
[프로그래머스] Lv.2 : 연속된 부분 수열의 합 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 5 ≤ sequence의 길이 ≤ 1,000,000 = 10^6 이기 때문에 O(n) 알고리즘을 사용해야 한다. 따라서 투포인터 알고리즘을 사용하여 문제를 풀었다. 코드 class Solution { public int[] solution(int[] sequence, int k) { int sum = sequence[0]; int i = 0, j = 0; // 답이 [0, 0]인 경우 if..

article thumbnail
[프로그래머스] Lv.2 : 큰 수 만들기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 그리디 알고리즘을 사용하기 위해서는 아래와 같이 2가지 조건을 만족해야 한다. 1) 탐욕 선택 속성(Greedy Choice Property) 2) 최적 부분 구조(Optimal Substructure) 1)은 이전의 선택이 이후에 영향을 주지 않음을 의미하며, 2)는 부분 문제의 최적결과가 전체에도 그대로 적용될 수 있어야 한다는 것이다. 1개 제거 2개 제거 3개 제거 4개 제거 1924..

[프로그래머스] Lv.2 : 마법의 엘리베이터 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 처음에는 BFS로 풀었다가 틀린 결괏값이 나와서 의아했는데, 입력값과 출력값을 보니 각 자리 숫자로만 답을 구할 수 있는 것 같아서 로직을 바꿨다. storey % 10으로 한 자리씩 처리하는 로직을 작성하였고, 각 자리 숫자가 5보다 큰 경우, 작은 경우, 같은 경우를 나누어서 처리하도록 하였다. 같은 경우(숫자가 5인 경우)에는 앞 자리 숫자가 5보다 크거나 같은 경우, 작은 경우로 나..

article thumbnail
[프로그래머스] Lv.2 : 최솟값 만들기 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/12941 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 누적값이 최소가 되게 하는 경우를 찾기 위해 다음의 예시를 들어보았다. A: [x, x+1] B: [y, y+1] 1. x*(y+1) + (x+1)*y = xy + x + xy + y = 2xy + x + y 2. xy + (x+1)*(y+1) = xy + xy + x + y + 1 = 2xy + x + y + 1 A: [x, x+k] B: [y, y+m] 1. x*(y+m) + (x+k)*..

article thumbnail
[프로그래머스] Lv.2 : [3차] 압축 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 사전 정보를 저장할 Map dict, 정답 숫자들을 저장할 리스트 List answerWords를 생성한다. int cnt는 사전의 색인 번호이며, dict에 단어가 추가될때마다 1씩 증가한다. int cnt = 1; // 사전의 색인 번호 Map dict // 사전 List answerWords // 정답 숫자 리스트 길이가 1인 단어(알파벳)들로 dict 초기화한 후, 아래의 로직대로 d..

[프로그래머스] Lv.2 : [3차] n진수 게임 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 숫자를 n진법으로 변환해야 하고, m명 중 p번째로 말할 숫자를 t개 구해야 한다. 숫자를 n진법으로 변환할 때는 Integer.toString(int i, int radix)를 사용하고 m명 중 p번째로 말할 숫자를 구할 때는 (전체 길이 % m == p)인 경우이다. 이 때 m == p일 때는 p를 미리 0으로 변경한다. 또한 Integer.toString()으로 변환하면 문자의 경우 소..

article thumbnail
[프로그래머스] Lv.2 : 삼각 달팽이 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 n x n 크기의 2차원 배열을 생성하여, 우하향 대각선 기준으로 아랫부분만 번호를 채운다. int lastNum: 마지막 번호 int[][] arr: 번호를 저장할 2차원 배열 int sequence = 1 -> lastNum int[] dr, int[] dc int dir = 0, 1, 2 int r, c: 현재 위치의 행, 열 번호 로직 while(탈출조건 => sequence == l..

[프로그래머스] Lv.2 : 다리를 지나는 트럭 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 큐를 사용하여 문제를 풀었다. 다리에 올라와있는 트럭의 인덱스를 저장하는 큐를 생성한 후 트럭이 다리 끝에 도착하면 큐에서 제거하고, 특정 조건을 만족하면 새로운 트럭을 큐에 추가한다. 트럭의 무게는 배열로 미리 주어지며, 트릭이 다리 끝에 도착했는지를 판별하기 위해 트럭의 출발 시간을 저장하는 int형 배열 truckDepartTime을 생성한다. int truckCnt = truck_we..

[프로그래머스] Lv.2 : [3차] 방금 그 곡 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17683 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 멜로디를 포함하는 음악을 찾아야 하며 일치하는 음악이 여러개라면, 라디오에서 재생된 시간이 제일 긴 음악 제목을 반환한다. 재생된 시간도 같을 경우 먼저 입력된 음악 제목을 반환한다. 따라서 정렬을 위해 MusicInfo 자료구조를 생성하였다. static class MusicInfo implements Comparable { int time; String title; String recor..

[프로그래머스] Lv.2 : [3차] 파일명 정렬 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 정렬 기준 1. HEAD: 문자 사전 순, 대소문자 구분X 2. NUMBER: 숫자 오름차순, 012 = 12 3. HEAD, NUMBER 같으면 입력 순서 그대로 유지 -> 안정 정렬 n 0; i--) { for (int j = 0; j < i; j++) { if (isChange(files[j], files[j+1])) { String tmp1 = files[j]; files[j] = f..

[프로그래머스] Lv.2 : 오픈채팅방 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 최종적으로 관리자가 보는 메시지는 유저가 들어오고 나간 기록이며, 유저의 최종적인 닉네임만 알면 된다. 따라서 들어오고 나가는 기록을 저장하고, 각 유저 아이디의 최종 닉네임을 저장해야 한다. 1. Enter, leave: 들어오고 나가는 것 Enter : uid, true leave : uid, false => ArrayDeque inOutRecords: 맨 뒤에서 삽입 연산과, 처음부터 ..

[프로그래머스] Lv.1 : 로또의 최고 순위와 최저 순위 - 자바[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. win_nums와 lottos의 일치 개수를 구한다. 2. lottos의 0의 개수를 구한다. 3. 최소 순위는 일치개수, 최대 순위는 (일치 개수 + 0의 개수)로 구한다. 코드 import java.util.*; class Solution { public int[] solution(int[] lottos, int[] win_nums) { HashSet winNums = new Has..