본문 바로가기

프로그래머스22

프로그래머스 lv2 - 괄호 회전하기 (자바) 문제프로그래머스 lv2 - 괄호 회전하기풀이스택 사용한 칸씩 왼쪽으로 이동시키기탐색 시작 위치를 한 칸씩 오른쪽으로 이동해당 위치 인덱스를 문자열 전체 길이로 나머지 연산 수행해서 범위를 넘어가는 위치 인덱스 처리괄호 짝이 맞다면 스택에서 pop()괄호 짝이 맞지 않다면 스택에 push()전체 문자를 탐색 후 스택이 비어있다면 answer 증가코드import java.util.*;class Solution { public int solution(String s) { int answer = 0; char[] arr = s.toCharArray(); int len = arr.length; for (int k = 0; k st = new Stack();.. 2024. 7. 1.
프로그래머스 lv2 - 스킬트리 문제프로그래머스 lv2 - 스킬 트리풀이선행 스킬의 맨 처음 스킬부터 유저가 만든 스킬트리와 비교현재 체크해야 할 선행 스킬과 유저 스킬트리에서 체크해야 할 스킬이 같으면 다음 선행 스킬로 idx 증가선행 스킬에 있는 스킬이 유저 스킬 트리에 있는 경우 cnt 증가최종적으로 스킬 트리 끝까지 비교 후 idx와 cnt가 같으면 선행 스킬 순서대로 있다고 판단하여 answer 증가코드import java.util.*;class Solution { public int solution(String skill, String[] skill_trees) { int answer = 0; ArrayList s = new ArrayList(); // skill for (char .. 2024. 6. 23.
프로그래머스 lv2 - 다리를 지나는 트럭 (자바) 문제프로그래머스 lv2 - 다리를 지나는 트럭풀이큐 활용큐를 다리로 생각하고 트럭을 넣고 빼면서 진행큐의 처음 상태를 다리 길이만큼 0을 넣고 시작해야 함 -> 큐에 있는 트럭을 맨 앞으로 이동시키기 위함현재 트럭을 태울 때까지 반복문을 돌리면서 상태를 갱신함어려웠던 점2번째 풀이 시도 끝에 풀었던 문제이다.순차적으로 넣고 빼는 걸 구현하는게 생각보다 조건들을 다 해결하기가 까다로웠다.코드import java.util.*;class Solution { public int solution(int bridge_length, int weight, int[] truck_weights) { int time = 0; Queue q = new LinkedList(); // 다리 .. 2024. 6. 23.
프로그래머스 lv2 - 두 큐 합 같게 만들기 (자바) [2022 KAKAO TECH INTERNSHIP] 문제프로그래머스 lv2 - 두 큐 합 같게 만들기풀이두 가지 풀이법 존재 : 투 포인터, 그리디투포인터큐1과 큐2를 붙여서 하나의 1차원 배열로 만든다.큐1에서 팝, 인서트 작업을 하는 것 → 큐 1의 맨 앞을 큐2의 맨 뒤로 붙임큐2에서 팝, 인서트 작업을 하는 것 → 큐 2의 맨 앞을 큐1의 맨 뒤로 붙임이런 구조기 때문에 두 큐를 합쳐서 1차원 배열로 만들고 투포인터로 접근한다.mid = (큐1의 합 + 큐2의 합) / 2큐1의 맨 앞과 큐2의 맨 뒤를 st, end 포인터로 잡고 투포인터 알고리즘을 진행한다.st ~ end의 원소의 합 st ~ end의 원소의 합 > mid 인 경우 합에서 st 위치를 빼주고 st++st ~ end의 원소의 합 = mid인 경우 종료-> 제일 먼저 찾는 경우가 가.. 2024. 6. 23.
프로그래머스 lv2 - 구명보트 (자바) 문제프로그래머스 lv2 - 구명보트풀이내 풀이정합성 테스트는 다 통과했지만 효율성 테스트를 전부 시간 초과로 실패했다.import java.util.*;class Solution { public int solution(int[] people, int limit) { int answer = 0; Arrays.sort(people); for (int i = 0; i mx) { mx = w + people[j]; idx = j; } } people[idx] = 0; answer++; } r.. 2024. 6. 22.
프로그래머스 lv2 - 요격 시스템 (자바) 문제프로그래머스 lv2 - 요격 시스템풀이그리디 문제미사일들의 범위가 들어 있는 배열을 미사일의 끝 지점을 기준으로 오름차순 정렬한다.요격 시스템의 시작 값을 0으로 하고 전체 미사일들을 확인하며 요격 시스템의 위치를 업데이트한다.요격 시스템의 위치 요격 시스템의 위치 > 미사일의 시작 위치 : 그냥 넘어감어려웠던 점그리디적인 사고를 하는게 스스로 부족하다고 느낀다. 범위가 있는 데이터들이 모여 있는 경우 떠올려야 할 접근 방법전체를 어떤 식으로 정렬해야 할까? (시작 위치? or 끝 위치? 어느 방식으로 정렬할까?)전체를 어느 값과 비교해가며 값을 업데이트 해야 할까?어떤 방식으로 업데이트 조건을 처리해야 할까?코드import java.util.*;class Solution { public in.. 2024. 6. 22.