TIL/알고리즘 23

[JAVA] 프로그래머스 | 12909 올바른 괄호

📝 TIL- [프로그래머스] 12909 올바른 괄호 "()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. 제한사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예입출력 예#1 🦔 설계 및 시도너무 대표적인 문제라! 금방 풀었다이 문제의 핵심은 닫는 괄호가 가장 처음 들어올 때의 처그리고 스택이 남아있으면 false를 출력하는 것이 중요하다! 1. 여는 괄호 ( 가 나오면 스택에 push2. 닫는 괄호 ) 가 나오면 2-1. 스택이 비어 있으면 return false (어차피 짝이 안맞음)2-2. 들어가 있는 (가 있으면 pop으로 빼주기3. 문자열 끝까지 실행 후 스택이 비..

TIL/알고리즘 2025.04.17

[JAVA] 프로그래머스 | 42583 다리를 지나는 트럭

📝 TIL- [42583] 다리를 지나는 트럭 문제를 요약하면 다음과 같다. 다리 위에는 bridge_length만큼 트럭이 동시에 올라갈 수 있다.다리 위 트럭들의 무게 합은 weight보다 작아야 한다.트럭은 1초마다 한 칸씩 움직인다.모든 트럭이 다리를 지나려면 몇 초가 걸리는가? 제한사항bridge_length는 1 이상 10,000 이하입니다.weight는 1 이상 10,000 이하입니다.truck_weights의 길이는 1 이상 10,000 이하입니다.모든 트럭의 무게는 1 이상 weight 이하입니다. 입출력 예입출력#1🦔 설계 및 시도1시간 동안 해결이 안돼서 정답을 본 문제. 내가 고민하던건 Queue의 경우 offerLast 즉, 값을 넣으면 빈 공간이 없이 쌓이는데,이 문제는 ..

TIL/알고리즘 2025.04.17

[JAVA] 백준 | 17413 단어뒤집기 2

📝 TIL- [백준] 17413 단어뒤집기 2 제한사항시간제한 1초메모리 제한 512MB 입출력 예입출력예 #1# 처리된 내용이 출력!baekjoon online judge // noojkeab enilno egduj tag // gatef gh // fe hg17413problem ever // 31471melborp reve 🦔 설계 및 시도문자열이 주어질 때 안(태그)은 그대로 출력,태그 밖의 단어는 공백 단위로 뒤집어 출력한다. (1차) 단순하게(사실 이것도 복잡하다고 생각했지만 가 들어오면 그대로 출력을 생각했으나 태그 안의 공백은 무시하고 그대로 출력되어야 한다. (2차) tag=0으로 초기화하여, > 가 들어오면 그대로 출력하고 tag는 다시 0으로를 생각했었는데, 계속 deque..

TIL/알고리즘 2025.04.15

[JAVA] 프로그래머스 | 12933 정수 내림차순으로 배치하기

📝 TIL- [프로그래머스] 12933 정수 내림차순으로 배치하기 제한사항n은 1이상 8000000000 이하인 자연수입니다. 입출력 예입력#1118372 출력#1873211🦔 설계 및 시도주어진 long n을 문자열로 변환하고 문자 단위로 자르고,큰 순서대로 정렬해서 합치기 💡 풀이 소스 코드 시간복잡도 : O(n log n)공간복잡도 : O(n) import java.util.*;class Solution { public long solution(long n) { long answer = 0; String num = Long.toString(n); String[] number = num.split(""); Arrays.so..

TIL/알고리즘 2025.04.15

[JAVA] 프로그래머스 | 12906 같은 숫자는 싫어

📝 TIL- [프로그래머스] 12906 같은 숫자는 싫어https://school.programmers.co.kr/learn/courses/30/lessons/12906 제한사항배열 arr의 크기 : 1,000,000 이하의 자연수배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수 입출력 예입력#1[1, 1, 3, 3, 0, 1, 1][1, 3, 0, 1] 출력#1[1, 3, 0, 1][4, 3] 🦔 설계 및 시도1. stack을 사용하여 아예 비어있으면 값을 넣고,2. 앞의 값과 동일하면 안 넣기 / 2-1. 다르면 넣기 처음에 stack을 사용해서 아래와 같이 풀었다. public class Solution { public int[] solution(int []arr)..

TIL/알고리즘 2025.04.14

[JAVA] 프로그래머스 | 12932 자연수 뒤집어 배열로 만들기

📝 TIL- [프로그래머스] 12932 자연수 뒤집어 배열로 만들기 제한사항 n은 10,000,000,000이하인 자연수입니다  입출력 예입력#1 12345  출력#1 [5,4,3,2,1] 🦔 설계 및 시도1. 숫자를 문자열로 변환 후 뒤집기2. 하나씩 쪼개서 정수로 저장! 문제 풀이 자체는 간단했는데 parseInt, String.valueOf 등 타입과 메서드 신경써야 할 것들이 많아서 은근 오래 걸렸다  🔥 풀이에 사용된 개념 String.valueOf(n)- 숫자나 여러 타입들(int, long, boolean 등)을 문자열(String)으로 바꿔주는 메서드- n+"" 로 쓰는 것과 비슷하지만 더 명시적이고 안전하다  Integer.parseInt(문자) - 문자열을 정수(int)로 바꿔주..

TIL/알고리즘 2025.04.10

[JAVA] 프로그래머스 | 181866 문자열 잘라서 정렬하기

📝 TIL- [프로그래머스] 181866 문자열 잘라서 정렬하 제한사항1 ≤ myString ≤ 100,000myString은 알파벳 소문자로 이루어진 문자열입니다.  입출력 예입력#1 "axbxcxdx"  출력#1 ["a","b","c","d"] 🦔 설계 및 시도1. split을 이용하여 x를 기준으로 나눈다2. 이때! xxxaaa와 같은 문자열은 공백이 생기므로.. 꼭! 빈문자열은 걸러주는 작업을 해야한다.3. 남은 문자열 정렬하여 배열로 반환하기  🔥 풀이에 사용된 개념 Split(String regex)괄호 안의 regex, 정규 표현식을 기준으로 문자열을 나눌 수 있다isEmpty()문자열이 빈 문자열인지 확인! if문과 주로 함께쓰고 빈문자열이면 truelist.toArray(new St..

TIL/알고리즘 2025.04.10

[JAVA] 프로그래머스 | 42746 가장 큰 수

📝 TIL- [프로그래머스] 42746 가장 큰 수 제한사항numbers의 길이는 1 이상 100,000 이하입니다.numbers의 원소는 0 이상 1,000 이하입니다.정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예입력#1[6, 10, 2] 출력#1"6210"🦔 설계 및 시도처음에 각 숫자를 문자로 바꿔서 비교하면 되지 않나?라고 생각했는데이 경우에 반례가 있었다 예를 들어 [6, 30, 3] 일 경우 문자열 정렬로 비교하면 [6, 30, 3]으로 정렬되는데,실제는 6303  따라서 두 수의 합을 비교했어야 했다!즉 숫자 비교가 아니라 붙였을 때 문자열 크기 비교가 핵심 1. 배열을 문자열로 변경하여 배열에 저장2. 두 문자열의 합을 기준으로 하여 정렬3. 배열을 join..

TIL/알고리즘 2025.04.09

[Java] 프로그래머스 | 120880 특이한 정렬

📝 TIL- [프로그래머스] 120880 특이한 정렬 제한사항1 ≤ n ≤ 10,0001 ≤ numlist의 원소 ≤ 10,0001 ≤ numlist의 길이 ≤ 100numlist는 중복된 원소를 갖지 않습니다. 입출력 예입력 #1numlist [1, 2, 3, 4,5, 6]n 4 출력 #1[4, 5, 3, 6, 2, 1]🦔 설계 및 시도n을 기준으로 정렬하기 때문에 빼서 절댓값을 한 값을정렬하면 될 거라고 생각을 했다처음에 Map을 쓰려다가, 지난번에 Map은 중복값이 안되는 걸 공부했기에Comparater의 조건을 넣는 구문을 활용하기로 했다. 절댓값 아이디어는 문제를 보자마자 바로 떠올랐는데확실히 자바 문법이 아직 익숙하지 않아서 구현하는 과정이 오래걸렸다 또 문제에서 중요한 건 거리가 똑같을 ..

TIL/알고리즘 2025.04.09

[JAVA] 프로그래머스 | 42748 K번째 수

📝 TIL- [프로그래머스] 42748 K번째 수 제한사항array의 길이는 1 이상 100 이하입니다.array의 각 원소는 1 이상 100 이하입니다.commands의 길이는 1 이상 50 이하입니다.commands의 각 원소는 길이가 3입니다.  입출력 예입출력 #1arraycommandsreturn[1, 5, 2, 6, 3, 7, 4][[2, 5, 3], [4, 4, 1], [1, 7, 3]][5, 6, 3]🦔 설계 및 시도1. commands 전체 길이까지 for문 1번2. 부분 배열을 찾기 위해 index 따라 for문 1번 > 리스트에 저장3. Collections을 사용하여 정렬 4. answer 배열에 담기 > 초기화 따라서 내가 푼 풀이는 다음과 같다class Solution { ..

TIL/알고리즘 2025.04.07