코테 22

[백준 9012] 괄호 / Kotlin

분류 번호 알고리즘 난이도 링크 BOJ 9012 Stack, 문자열 실버 4 풀이 1. 스택 사용 2-1. '(' 일 경우, 스택에 무조건 넣음 2-2. ')' 일 경우 a. 스택이 비어 있으면 NO, 현재 문자열을 검사하는 반복문에 대해서 break b. 스택에 괄호가 있으면 pop 후에 이어서 진행 코틀린 공부도 할 겸, 겸사겸사 오랜만에 알고리즘 풀기 자바 경험에 의존해서 작성하니까 코틀린도 자바스럽게 풀어 버림 😊👌 자바였으면 5분도 안 걸렸을 거 코틀린으로 하려니 아리까리 (ㅠㅠ) 코틀린을 좀 더 코틀린스럽게 짜려면 스프링만 할 게 아니라 코틀린도 해야겠다. (기초만 후다닥 하고 넘어가버리니까 얕은 지식으로 눈 가리고 아웅 하고 있는 듯...ㅠ) 더보기 import java.util.* impo..

알고리즘왕/BOJ 2021.11.22

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

풀이 int 배열을 String 배열로 변경 문자열을 comparator로 정렬 str1 + str2와 str2 + str1를 비교 둘 중 더 크게 만드는 놈을 앞으로 앞에서부터 Stringbuilder에 넣어서 tostring으로 반환 주어진 모든 숫자가 0일 경우 반환값은 "0"이어야 함 비고 ㅋㅋ ㅠㅠㅠ 한줄이면 끝나는 것을./... 정말 어려웠다 ㅠㅠ 더보기 package 연습문제.P42746_가장큰수; import java.util.Arrays; import java.util.Comparator; public class Solution { static public String solution(int[] numbers) { StringBuilder answer = new StringBuilder(..

[프로그래머스/JAVA] 동굴탐험

풀이 위상정렬, deque 사용 현재 방문한 방과 연결된 방 전부를 que의 앞에 넣음 진입차수가 0보다 클 경우 탐색이 불가하므로 que의 뒤에 넣음 비고 queue => deque 했을 뿐인데 효율성 마지막 케이스를 통과했다 ㅎㅂㅎ...! 어렵다 어려워~ 더보기 package KakaoIntern2020.P67260_동굴탐험; import java.util.ArrayList; import java.util.Arrays; import java.util.Deque; import java.util.LinkedList; public class Solution { public static boolean solution(int n, int[][] path, int[][] order) { boolean answe..

[프로그래머스/JAVA] 경주로 건설

풀이 4방탐색/bfs visit 배열 대신 최저 값을 가지고 있는 2차원 int 배열 min을 사용 지금 비용이 min에 저장되어 있는 값보다 크면 continue dr, dc로 선언한 방향의 index가 상-0, 하-1, 좌-2, 우-3으로 index/2 값이 같으면 100원만, 다르면 600원 추가 여기서 상하/좌우 따질 필요없이 직전의 d와 현재 d만 같으면 100원 나머지는 600원 해도 될 듯 어차피 직전 d의 반대방향일 경우 min[][]의 값이 올라서 쓸모 없어짐 비고 if (min[nr][nc] < cost) continue; 처음에는 = 0 && c < N) return true; return false; } static class Node implements Comparable { in..

[프로그래머스/JAVA] 징검다리 건너기

풀이 stones에서 가장 큰 값을 right로 설정하여 이분탐색 진행 mid보다 작은 값이 연속으로 k개 이상 나타날 경우 불가능 => 오른쪽으로 ㄱㄱ (left = mid+1) 반대의 경우 왼쪽으로 => right = mid - 1; 비고 이분탐색... left right 아 어쩌란 말이냐ㅕ~~~~~ 범위 설정이 세상에서 제일 어렵구요 ㅠㅠ 더보기 package KakaoIntern2019.P64062_징검다리건너기; public class Solution { static int solution(int[] stones, int k) { int max = 0; for (int i = 0; i < stones.length; i++) { max = Math.max(stones[i], max); } int ..

[프로그래머스/JAVA] 호텔방배정

풀이 다음으로 묵을 수 있는 방을 관리하는 map (parents) 사용 다음으로 묵을 수 있는 방이 공실인지 아닌지 반복문으로 탐색 묵을 수 없다면 현재 방을 list에 넣어 path로 관리 묵을 수 잇는 곳을 찾으면 지금까지 path 노드들의 다음으로 묵을 수 있는 방을 현재노드+1로 교체 비고 union-find로 풀고 싶었는데 find 함수 구현하려다가 gg 뭔가 머리속에서 그림이 안 그려졌음 ㅠㅠ 더보기 package KakaoIntern2019.P64063_호텔방배정; import java.util.ArrayList; import java.util.HashMap; public class Solution { static long[] solution(long k, long[] room_number..

[프로그래머스/JAVA] 불량 사용자

풀이 아이디의 최대가 최대 8개이기 때문에 조합으로 가능 user id 중 banned id의 개수만큼 조합으로 고름 banned id에 해당하는 경우만 최종적으로 고른 user id의 index를 stringbuilder로 이어붙임 어차피 한자리수*banned id개수니까 가능함 이어 붙인 문자열을 set에 넣음 해당 문자열이 set에 존재할 경우 0 반환 아닐경우 1 반환 비고 각각 다른 banned_id에 의해 걸렸더라도 제재아이디의 목록이 같으면 하나의 경우임 더보기 package KakaoIntern2019.P64064_불량사용자; import java.util.HashSet; public class Solution { static HashSet set; static public int solu..

[프로그래머스/JAVA] 크레인 인형 뽑기 게임

문제요약 NxN 보드에서 하나씩 뽑아서 바구니에 넣기 바구니에서 똑같은 거 두개 쌓이면 터짐 터진 인형 개수 구하기 풀이 각 컬럼을 스택으로 만들어서 넣어 놓음 moves 순서대로 stack에서 인형을 꺼냄 바구니도 스택으로 바구니에서 peek으로 확인 꺼내온 인형과 같으면 pop해서 버림 다르면 push 더보기 package KakaoIntern2019.P64061_크레인인형뽑기게임; import java.util.Stack; public class Solution { static int solution(int[][] board, int[] moves) { int answer = 0; final int N = board.length; Stack[] stacks = new Stack[N]; Stack b..

[BOJ/20057/JAVA] 마법사 상어와 토네이도

날짜 분류 번호 알고리즘 분류 21-04-06 BOJ 20057 구현, 시뮬레이션 링크 문제 요약 토네이도가 중점을 시작으로 이동 이동하면서 각 칸에 있는 모래가 날아감 주변 칸에 비율이 정해져 있고 이동하고 남은 모든 모래는 이동한 칸의 앞칸으로 전부 이동 밖으로 나간 모래의 양 구하기 풀이 기존의 모래를 전부 더함 토네이도가 상하좌우로 움직이면서 모래가 이동할 위치를 tr, tc 배열로 미리 정해놓음 남은 모래를 기존의 모래 총합에서 뺌 더보기 package b20.BOJ_20057_마법사상어와토네이도; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class..

알고리즘왕/BOJ 2021.04.06

[프로그래머스/42889/JAVA] 실패율

Kakao Blind Recruitment 2019 날짜 분류 번호 알고리즘 분류 21-03-31 프로그래머스 42889 구현? 링크 문제 요약 각 스테이지의 실패율을 구하여 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호를 정렬하여 반환 실패율 = 도달했지만 클리어X인 사람 / 도달한 사람 풀이 각 스테이지에 머물러 있는 사람의 숫자를 구함 스테이지1부터 머물러있는 사람/도달한 사람(=실패율) 계산 도달한 사람 = 전체 - 이전단계에 머물러 있는 사람 실패율과 스테이지의 번호를 담고 있는 Node객체를 pq에 넣어 정렬 pq에서 하나씩 빼면서 정답 배열에 넣음 비고 휴.... 내일은 레벨 3으로 풀어야지... 더보기 package KakaoBlindRecruitment2019.P42889_실패율..