코테를 풀다가 문법적인 부분에서 자꾸 막혀서 다른 분의 답을 봤는데, 우선순위 큐를 사용해서 너무 쉽게 풀어놓으셔서 정리해보았다.📖 코테문제 바로가기 💡 원소들이 우선순위에 따라 정렬되어 있는 자료구조일반적인 큐 : 먼저 들어온 원소가 먼저 나감우선순위 큐 : 각
사실 이 문제는 해가 푼 방식이 모범답안과 개념 풀이는 일치했다.그러나 아직 코드를 효율적으로 가시성있게 작성하는 방법이 서툰데, 이 부분을 잘 정리한 답안을 발견해서 가져와봤다.📖 코테문제 바로가기위의 코드에서 특히 "위험지대 찾기"라고 주석이 달려있는 부분의 fo
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음

문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다.예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다.b

연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요.사실 처음에는 또 돌

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.🖥️ 문제 바로가기사실 문제 자체는 너무 쉽다. 그런데 문제를

코드 GCD : 최대공약수 LCM : 최소공배수 유클리드 호제법 두 수를 비교해서 작은 수로 큰 수를 나눈다. 나머지를 구한다. 나머지가 0이 아니라면, 나누어진 수를 나머지로, 나머지를 나누어진 수로 대체한다. 나머지가 0이 되면, 그때의 나누어진 수가 최대공약

운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.큐에

Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습

트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다

프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포

코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다.예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다.코니는 각 종류별로 최대

OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈트는 건전지로 작동되는데, 순간이동을 하면 건전지 사용량이 줄지 않지만

✏️ 문제 바로가기셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.(a1, a2, a3, ..., an)튜플은 다음과

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작

이런 이어지는 영역의 수, 혹은 영역의 넓이를 구하는 문제는 코딩테스트에서 종종 볼 수 있는 문제 유형 중 하나이다.이런 유형의 경우, DFS나 BFS를 활용하여 쉽게 해결할 수 있다.DFS = 깊이 우선 탐색그래프를 탐색하는 알고리즘 중 하나이다.시작 정점에서부터

로직을 간단히 설명해보자면,우선 dpArr 배열에는 각 숫자의 연산 횟수가 저장된다. 이를 0이 아닌 Integer.MAX_VALUE로 초기화하는 이유는, 뒤에서 더 작은 값을 비교해서 배열에 저장하도록 하는데 초기값이 커야 해당 배열의 값이 연산을 해서 나온 횟수인지

우선 전체적인 로직은 간단하다.각 자리의 숫자 합을 구하고, 나누어 떨어지는지 확인해서 결과를 return.각 자리 숫자 합을 구하는 건 숫자를 10으로 나누어서 제일 끝에 있는 일의 자리 숫자를 sum에 더하고,10으로 나누어서 일의 자리 숫자를 제거한다.이를 숫자가

프로그래머스에서 코테 문제를 고를때 AI 추천 문제로 푸는 편인데, 오랜만에 Lv.0 문제가 나와서 풀어봤다.문제 자체도 역시 쉽고 간단했다.그런데 특정 숫자 포함 여부 확인 하는 간단한 방법을 알게 되어 정리하려고 가져와 봤다.처음에는 다음과 같은 코드를 사용했다.약

✏️ 문제 바로가기사실 크게 깨달음이 있었던 문제는 아니다.나는 우선순위 큐를 사용하면 굳이 정렬하는 과정을 생략할 수 있을 것 같아 PriorityQueue를 사용하여 주어진 정수를 저장하였다.일의 자리를 잘라서 우선순위 큐에 저장하고, 이를 다시 10으로 나눠 일의

문제 ✏️ 문제 바로가기 |문제|레벨|정답률| |-|-|-| |두 개 뽑아서 더하기|Lv.1|70%| My Code 우선순위 큐를 이용해서 result 값들을 저장하였다. 그리고 반복문의 중복을 통해서 두 가지 숫자를 뽑는 행위를 구현하였고, 큐에 저장된 값인지

✏️ 문제 바로가기몫이 3이상일 경우에 while 반복문을 돈다.반복문 안에서는 몫을 3으로 계속 나눠주고, 나머지는 rest라는 ArrayList에 저장한다.그리고 계산이 끝난 마지막 몫도 ArrayList에 넣어준다.=> 이러면 자동으로 역순 저장됨뒤에서부터 10진

✍🏻 문제 바로가기우선 최소의 넓이를 구하려면 가로와 세로 길이를 비교해서 큰 값을 가로 길이로, 작은 값을 세로 길이로 바꿔야겠다는 생각을 했다.\-> 카드를 최대한 수납가능하도록 회전하는 과정그리고 나서 모든 가로 길이와 세로 길이를 비교해서 가장 큰 가로, 세로

✍🏻 문제 바로가기오름차순으로 정렬을 하기 위해서 우선순위 큐를 사용하였다.그리고 sum이라는 변수에 차례대로 더하면서 예산과 비교해나갔고, answer 횟수를 1씩 증가하였다.그런데 이런식으로 하면 예산을 전부 쓰는 경우가 아니라면, 마지막에 answer가 한 번

문제 ✍🏻 문제 바로가기 |문제|레벨|정답률| |-|-|-| |홀수만 더하기|D1|70%| My Code 입력된 값들을 line별로 읽어들이고, 이를 split() 메서드를 활용해 띄워쓰기 기준으로 나눠 String 배열에 저장하였다. 그리고 이를 for문을 돌

✏️ 문제 바로가기우선 나는 처음에 이런 방식으로 코드를 짜나갔다.1\. 배열 두 개를 2진수로 변경하기2\. 변경된 2진수 배열을 비교하여 공백 찾기3\. 찾은 공백의 인덱스를 기준으로 결과 배열 만들기그런데 이 과정이 생각보다 복잡하게 코드가 작성되어 문법적으로도

✏️ 문제 바로가기우선 Set의 특징인 중복 불가능을 활용해서 중복을 제거한 서로 다른 수들만 저장을 하였다.그리고 서로 다른 수의 개수가 nums.length/2보다 작거나 같으면 set.size()를 리턴, 즉 서로 다른 숫자 개수를 리턴하였다.그게 아니라면 num

✏️ 문제 바로가기우선 결론적으로, 나는 이 문제를 풀지 못했다.나는 배열을 앞에서부터 순차적으로 탐색해나가면서 다음에 오는 가격이 현재 가격보다 크면 계속 구매하고, 다음에 올 값이 작은 값이면 팔아버리는 식으로.이렇게 하면 예시로 나온 3가지 케이스는 통과가 되었다

✍🏻 문제 바로가기for문을 세 개 사용하여 전체 배열을 돌며 3가지 숫자를 pick했다.그리고 소수인지 판별은 클래스로 빼서, 2부터 해당 숫자 전까지 돌면서 나머지가 0이면 false를 return하도록 하였다.그런데 사실 소수를 판별할 때, 2부터 해당 숫자 전

✍🏻 문제 바로가기문제를 풀다가 형변환, 문자열 파싱 방법 등이 꼬여서 문법적 오류가 발생하였고, 이를 해결하지 못해 풀이에 실패하였다.우선 현재 문자가 숫자일 경우엔 다음과 같이 처리한다.현재 문자가 1이고, 다음 문자가 0인 경우 : 두 자리 숫자이기에 함께 처리

✍🏻 문제 바로가기우선, 이 코드는 실패 코드이다.실패 요인은 다음과 같다.불필요하게 조건문이 복잡해져 메모리 초과 발생숫자 0이 포함된 경우 오류 발생예) 105출력 형식 일부 오류무엇보다 코드의 논리를 단순화하는 과정이 필요하다.그리고 이 문제의 한 가지 tip은

🍀 문제 바로가기lottos와 win_nums 배열을 중복 for문으로 돌면서, 값들을 비교한다.우선 lottos 값이 0이면 zeroNum을 증가시켜 0의 갯수를 구한다.lottos와 win_nums 값이 같으면 corrrectNums 배열에 값을 추가하여 중복된

🍀 문제 바로가기3가지의 찍는 방식을 배열에 저장answer배열과 3가지 찍기 패턴을 비교해서 correct 배열에 몇개 맞았는지 저장각각의 경우의 수에 따라서 가장 많이 맞춘 사람 배열로 return기존 코드와 다른 점은 최대 점수를 맞은 사람을 찾아 리턴하는 방식

✏️ 문제 바로가기나는 문제를 읽자마자 LIFO 자료구조를 활용해야겠다는 생각이 먼저 들었다. 그래서 사용한 것이 Stack.사실 Stack를 활용하여 코드를 짜본게 처음인데, 점차 응용력이 늘고 있다는 느낌이 들어서 기분이 좋았다.moves.length만큼 돌면서 b

✏️ 문제 바로가기코드에 대한 설명은 주석으로 다 나와있다.나는 문자열 관련 문제들과 도형 관련 문제가 약한 편이다. 이번 문제 역시 난이도가 높지 않음에도 불구하고, 30분 내에 해결하고자 하니 실패했다.ㄴ 코테를 대비하고자 보통 30분 시간 제한을 두고 푸는 편..

🏖️ 문제 바로가기keypad를 2차원 배열로 구성왼손과 오른손의 현재 x,y위치를 변수로 초기화for문으로 numbers를 돌면서 왼쪽 열인지, 오른쪽 열인지, 중간 열인지 구분한다.왼쪽 열이면 answer에 L을 추가하고 왼손의 현재 위치를 update 한 후 b

🍸 문제 바로가기다른 사람들 풀이 보면 어렵게 계산했던데, 굳이 그렇게 안해도 되고 그냥 아스키코드(int)에서 +1해서 char로 다시 변환해주면 됨,,쉽게 말하면, a+1=b인 셈.s를 돌면서 공백인지 아닌지 구분.공백이면 answer에도 공백 추가.공백 아니면

🍉 문제 바로가기arr 길이가 1이면 -1 returnarr 배열 중 가장 작은 값이 들어있는 인덱스 찾기 = minresult 배열에 min 이전의 값들 넣기min 값이 마지막에 위치한 값이 아니라면 min 뒤에 있는 값들을 한칸씩 당기기else 문을 없애서 가독성

💀 문제 바로가기키-값 쌍으로 저장이 가능한 HashMap을 통해 모든 성격 유형을 키로 넣고 값을 0으로 초기화각 survey의 첫 유형과 두 번째 유형을 각각 변수로 저장하고, 해당 변수의 현재 점수 역시 변수로 각각 저장choices 점수에 따라서 해시맵의 점수

✏️ 문제 바로가기Integer.parseInt()Integer.toString()\+) nextInt 다음에 nextLine이 올때는 중간에 nextLine을 한 번 넣어주기!! ㄴ 그래야 다음 열을 읽어들일 수 있음가장 큰 차이점은 입력값을 받아올때 방식이다.nex

🌊 문제 바로가기키와 값 쌍으로 저장하기 위해 HashMap 사용s 문자열에서 한글자씩 읽어오면서 숫자인지 판별숫자라면 result에 그대로 추가 / 아니라면 str이라는 문자열에 추가현재까지의 str이 hashMap에 저장되어 있는 키인지 여부 확인 -> 있으면 v

☁ 문제 바로가기\*\* 불통과 코드substring 억지로 쓰려고 하지 말고, 쉽게 풀 수 있는건 쉽게 풀자..!굳이 substring 안써도 그냥 붙이기만 하면 됨 ㅇㅇfor (int i = 0; i < lowerStr.length(); i++) {

🍀 문제 바로가기사실 이 문제는 이미 한 번 풀었던 적이 있었다.이전 풀이 ➡️근데 코드 보면 알겠지만 어처구니 없는 코드임,,ㅋ피곤했는지 뭔 if문을 남발해놔서 다시 풀어봤숩니당각 배열에 패턴 넣어서 초기화점수를 저장할 rank 배열 선언for문 돌면서 각 rank

🩶 문제 바로가기행렬 곱셈의 결과물인 result 배열의 높이는 arr2의 가로 길이, 너비는 arr1의 세로 길이와 같기 때문에 각각 height와 width 라는 변수로 할당ㄴ 아래 그림 참고!우선 두 번의 for문을 돌면서 result 배열에 값을 채워준다.이때

✨ 문제 바로가기이중 for 문을 사용해서 전체 문자열 돌면서 각각 하나씩 문자열을 뽑음a,b 문자에 각 문자열의 n 번째 문자를 저장a가 b보다 알파벳 순서가 뒤라면, 두 문자열 자리 바꾸기a와 b가 같은 알파벳이라면, 문자열 전체를 사전적 비교하기a.compareT

사실 이건 넘 쉬워서 딱히 적을게 없음;

콜라를 받을 수 있을 때까지 (n < a가 아닐때) 반복문을 돌린다.result라는 변수를 만들어서 새롭게 받는 콜라의 수를 기록한다.현재 전체 콜라 수를 a로 나누고, 그때마다 받을 수 있는 콜라수인 b를 곱하여 추가한다.n은 콜라를 받기 위해 제출한 수를 빼준

✨ 문제 바로가기\-> 일부 런타임 에러 발생로직 상의 오류는 없어보이는데 런타임 에러가 발생해서 알아보니경우에 따라 타입 오류가 발생할 수 있고, 혹은 타입으로 인해 원하는 결과가 나오지 않을 수도 있다는 것을 알게 되었다.\-> 결과적으로 바뀐 점은 하나. int

🩶 문제 바로가기문자열만큼 반복문 돌면서 '('일 경우 스택에 push그게 아니라면 스택 isEmpty 여부를 따짐스택이 비어있는데 ')'가 들어온 상황이라면 false, 스택에 '('가 존재한다면 pop 시켜줌최종적으로 스택이 비어있지 않다면 false 처리처음에는

🩶 문제 바로가기문자열 길이만큼 for문 돌면서, 유효성 검사를 하여 result 값을 높이고 회전을 한다.isValid라는 유효성 검사 함수 안에서는 스택을 사용하였다. 이전 괄호 문제의 코드를 가져와서 활용함 여기서 기존 코드와 다른 점은 괄호 종류가 많아져서 매

🎃 문제 바로가기스택 선언 후 s 문자열 길이만큼 for문 돌기스택이 비어있는 상태이거나, 가장 최근 저장 값이 c와 동일하지 않으면 스택에 추가그게 아니라면 pop해서 저장된 값 삭제최종적으로 스택이 비어있으면 1, 아니면 0 리턴크게 달라진 건 없고, 마지막에 i

🎨 문제 바로가기return 값을 저장할 배열 answer 생성for문으로 prices 배열 전체를 돌되, 마지막 값은 어차피 0이기 때문에 i 범위에서 마지막 값은 제한하였음현재 prices 배열 값을 p라는 변수에 저장이중 for문으로 내부에서 i부터 prices

🩶 문제 바로가기Math.sqrt() 메서드를 활용하여 제곱근을 num에 저장해당 제곱근을 다시 제곱한 값이 n과 동일하면 제곱근이 제대로 구해졌다는 의미이므로, +1한 값을 제곱하여 return제곱근이 없다면 -1 return예전에는 Math 클래스 메서드들을 적극

🎃 문제 바로가기ㄴ 실패 코드전체 신고 횟수와 내가 받을 이메일 수 를 각각 배열로 선언report를 for문으로 돌면서 report 배열에서 신고자와 신고 받은 사람을 구분하여 String 변수에 저장reportTotal 배열을 탐색하면서 이전 신고 이력이 없다면

🥨 문제 바로가기\*\* 참고로 정확성은 통과되었으나, 효율성 테스트를 통과하지 못한 코드입니다 ,,ㅎ일단 결과는 정확히 나오는데 효율적이지 않은 이유를 찾아보니 해시맵을 두 번 사용해서 불필요한 복잡도를 만들어낸 게 원인이었다.전체 로직은 다음과 같다.해시맵 두 개

🩶 문제 바로가기두 개의 카드 내용을 각각 큐에 저장goal 길이만큼 for문을 돌면서 두 큐 내용 중 일치하는 문자열이 있으면 poll, 없으면 result를 No로 변환ㄴ result는 기본적으로 Yes로 초기화불필요한 if 조건 삭제변수 선언 최소화개인적으로 이

🥮 문제 바로가기key/value 맵에 저장10개씩 잘라서 각 제품 개수 count일치 여부 확인wantMap이라는 Map에 want, number 배열 저장10개씩 잘라서 for문 돌기discountMap이라는 Map에 10개의 discount 정보 저장이미 존재하

각 주문에 대한 모든 조합을 카운트각 코스 길이에 대해서 최빈 조합 찾기사전순 정렬 후 return이진수를 사용하여 데이터를 조작하거나 특정 상태를 나타내는 기법이진수의 각 비트가 1인지 0인지를 통해서 다양한 정보 표현 가능=> 조합, 집합 등에서 사용비트 : 0 또

문제 |문제|레벨|정답률| |-|-|-| |예상대진표|Lv.2|69%| MyCode
💥 문제 바로가기모든 Array를 돌기상하좌우 보고 차 계산(이동할 방) - (현재 방) = 1 이면 cnt++위치 이동해서 반복 (재귀 사용)전체를 돌면서 cnt를 비교하고, 큰 값을 cnt에 저장만약 cnt가 같다면 숫자가 작은걸 pick!숫자와 cnt를 출력아직

💟 문제 바로가기분모와 분자의 최대 공약수를 찾는다.기약분수를 만든다.분모의 소인수를 따진다.소인수가 2와 5만 존재하는지 확인한다.앞선 나의 코드에서는 소인수분해를 하는 과정이 있었는데 그럴 필요 없이 그냥 2,5의 소인수만 찾으면 되는거였기에 간소화가 가능했다.그

💟 문제 바로가기두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다.문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다.index만큼의 뒤의 알파벳이 z를 넘어갈 경

💌 문제 바로가기사실 로직 설명도 할게 딱히 없는 쉬운 문제이지만,처음에 테케는 맞는데 몇 가지 케이스에서 통과하지 못해서 코드를 다시 보니 long타입으로 되어 있어서 needMoney 변수도 long 타입으로 고치니 성공~!int로 하고 왜 오류인지 모르겠다면 l

💌 문제 바로가기어제 데일리 실습을 푸는데 문자열은 아스키코드로 쉽게 더하고 뺄 수 있고, 소문자 대문자 체크 역시 아스키코드로 할 수 있다는 걸 알고 한 번 더 풀어봤다.참고로 isLowerCase(), isUpperCase()로 하게 되면 제대로 판별되지 않는 경

🥨 문제 바로가기약수의 개수 구하여 list에 저장하기limit 넘는 수라면 power를, 아니라면 해당 약수의 개수를 sum 변수에 더하기약수의 개수 구하는 로직기존에는 3중 for문을 통해서 모든 경우를 다 탐색하였는데, 이런 경우 시간 초과가 발생한다. 이전에도

🍿 문제 바로가기두 배열을 정렬해준다.여벌 체육복을 가져온 학생이 체육복을 도난 당한 경우에 대한 예외 처리를 먼저 해준다.나의 경우에는 그런 경우 두 배열에서 해당 학생을 -1로 처리하고, answer를 1 증가하였다.그리고 두 배열을 비교하면서 reserve 배열

✨ 문제 바로가기결과 - 일부 테스트 시간 초과 발생 🚨우선 나는 2부터 n까지 돌면서, 2~n-1까지를 나눠서 떨어지는게 있다면 소수가 아니라는 뜻이니 boolean 변수를 false로 만들고 break 걸어주는 방식으로 풀었다.그런데 이렇게 하면 일부 케이스에서

✔ 문제 바로가기stack을 사용하긴 했지만 stack의 특성을 활용하진 않은 코드,,^stack에 일단 push 해주고 크기가 4이상이면 get 메서드로 뒤에서부터 4개를 가져와서 맞는지 check 해준다.그리고 순서대로 들어와있다면 pop!그런데 알고보니 get 메

💻 문제 바로가기시간 초과 발생 🚨player 인덱스를 찾는 부분에서 불필요한 지체가 일어남HashMap 사용하면 인덱스를 찾는 과정이 get() 메서드로 간단해짐

배열에서 최댓값 찾기arr 배열에 숫자별 개수를 저장indices에 인덱스 저장arr을 기준으로 indices 정렬정렬된 배열을 기준으로 값 찾아내기이 문제에서 나는 값을 기준으로 내림차순 정렬을 해서 인데스를 가져와야하는데, map은 값 기준 정렬이 안되니 어떻게 해

🍰 문제 바로가기거의 반 년만의 코테 문제라 브론즈부터 시작해봤다.자바도 반 년만에 쓰는거라 문법도 어색하여 그런지 쓸데없이 변수를 너무 많이 선언한 느낌이다.코틀린으로 코드를 짤 때는 간단하게 표현되던 문법들이 자바에서는 허용되지 않는다는 게 생각보다 꽤 불편했다.

🍃 문제 바로가기좋은 점조건 분기 명확: 최대 길이 계산 → 삼각형 조건 판별 → 세 변 비교 → 출력 순서가 명확하게 잘 구성됨입력 반복 처리: while (first != 0)로 종료 조건을 깔끔하게 처리함개선 포인트입력 반복 로직 개선현재 while 루프 내에

좋은 점 문제의 규칙(6의 배수씩 증가)을 잘 이해하고 calculate += 6 \* cntNum 로직으로 구현calculate로 현재 위치를 추적하고, cntNum을 레벨(depth)로 사용한 방식이 직관적개선 포인트불필요한 조건 제거 if(calculate ==

😈 문제 바로가기대문자-소문자 변환 함수와 map을 이용해서 문제를 풀었다.개선점put() 중복 제거 containsKey() 없이 getOrDefault() 쓰면 비교 안해도 됨max 계산 & 동점자 확인 한 번에 처리 하나의 for문 안에서 처리할 것스캐너 종

🍋 문제 바로가기개선 포인트불필요한 화살표 이동 제거 가능현재 코드는 1번 버튼으로 화살표를 이동시킨 후, 다시 4번 버튼으로 교체함하지만 실제로는 4 버튼만 눌러도 화살표가 자동으로 따라감!=> 1번 버튼 따로 처리할 필요 없음중복 로직 함수화 가능KBS1, KBS

🍋 문제 바로가기처음에 시간 초과가 나서 바꾼 것1\. Scanner를 BufferedReader로 변경2\. check가 나오면 그때그때 출력하던 로직에서 한 번에 출력하는 방식으로 변경장점BufferedReade + StringBuilder를 사용해서 빠른 입출력

🍋 문제 바로가기장점문제 조건이 명확히 주석으로 정리되어 있어 가독성 좋음.규칙을 간단하게 홀수/짝수로 판단하여 로직을 아주 깔끔하게 처리함.Scanner 사용과 조건문 구성 모두 간단하고 안정적.개선 포인트

🍋 문제 바로가기구현/시뮬레이션리스트 삽입 위치 조작정렬과는 무관한 "순차적 조건 기반 삽입"앞에 서 있는 학생들 중에서 자기보다 큰 학생이 있으면, 그 중 가장 앞의 학생 바로 앞에 선다.큰 학생이 없다면 그냥 뒤에 선다.삽입 시 뒤로 밀리는 학생 수를 총 걸음 수

🍋 문제 바로가기솔직히 이 문제는 머리로는 알겠는데 정렬을 어떻게 해야할지 몰라서 어려웠다.정확히 말하자면 문제가 어려운게 아니라 자바를 까먹었다 ...비슷한 문제를 많이 풀어야할 것 같다.특히 이 부분.List<int\[]> 정렬 List<int\[]>는

🏖️ 문제 바로가기이 문제는 사실 처음에 틀려서 반례를 찾아가며 문제점을 찾아 해결했다.굉장히 길고 정신 없는 코드..에 완전 잘못 잡은 방향.또 습관이 튀어나와서 쓸데없이 복잡하게 생각했다.문제에서는 " 만일 자신보다 더 큰 덩치의 사람이 k명이라면 그 사람의 덩치

🛋️ 문제 바로가기배열 → List로 변환할 때 사용하는 정적 메서드java.util.Arrays 클래스에 정의됨List<String> vowels = Arrays.asList("a", "e", "i", "o", "u");이런 식으로 활용하면 문자열 배열을 Li

👾 문제 바로가기이 문제는 사실 초반에 시간 초과로 실패했던 문제이다.쉽게 보고 무심코 비효율적인 자료형을 선택...한 것이 원인.비교하려고 기존 코드는 주석으로 남겨놨다.기존엔 보이다시피 List를 활용해서 이름들을 저장하고, for문 안에서 중복되지 않는 이름만

🎧 문제 바로가기솔직히 이 문제는 온전한 구현 문제이기도 했고,,, 사실 큰 아이디어 없이 생각나는대로 코드를 짜서 길고 비효율적인 코드가 완성되었다,,ㄴ 사실 판의 인덱스 카운트가 당연히 0부터인줄 알았는데 1부터였다.. 그래서 인덱스 카운트가 좀 이상할지도우선 기

👾 문제 바로가기구현 문제라 문제 자체가 막 어렵진 않았는데,,, 반례 찾는데 시간을 대부분 사용한 문제.은근히 반례가 많았고 (내 코드에 구멍이 많았다는 이야기겠지만) 시도를 엄청 많이 한 문제였다.문제를 요약하자면,점수 리스트는 비오름차순같은 점수는 같은 등수리스

👾 문제 바로가기SSAFY 계절 학기 때 배운 상단에 풀이 과정 먼저 서술하고 코드 적기를 열심히 실천하고 있는 나..개선 포인트남학생 루프(배수인 스위치 변경) -> 간결하게 정리 가능 for (int m = num; m <= switchCnt; m += nu

👾 문제 바로가기정말 구현 문제는 쉽지 않다 ..반례가 너무 많고,, 신경 쓸 것이 너무 많다..우선 여러 번 틀려서, 반례를 엄청 찾았는데 수정된 부분은 정말 별거 아니다.//\*\* 표시되 부분 2군데인데,우선 list로 값을 받아놓고 앞의 value를 삭제하고

🐲 문제 바로가기그냥 .. 종이에 몇 번 끄적이고 풀었던 문제.딱히 반례나 어려울 내용이 없어서 금방 해결했다.다른 분들은 어떤 식으로 접근했는지는 모르겠으나 나는 일단 처음과 끝, 가로등 사이의 간격을 계산했다.여기서 주의점은 가로등 사이의 간격은 물리적 간격을 그

🪹 문제 바로가기이 문제는 알고리즘 종류에서 알 수 있듯 큐를 쓰기 위한 문제 같았다. 그러나.. 저는 스포하자면 큐를 쓰진 않았습니다.우선 나는 큐를 생각하지 못하고 List를 사용하였다.처음에는 습관처럼 ArrayList를 썼고, 시간초과로 실패하였다. 코드상에는

👑 문제 바로가기제일 처음 도시에서 무조건 한 번은 주유를 해야하니,첫 cost를 설정하고 난뒤에는 next 인덱스를 뒤로 옮겨가면서 current 도시가 더 값이 싸면 여기서 주유를 다 계산하도록 했다. 만약 next 도시가 더 싸면 거기로 current를 옮기는

👑 문제 바로가기쉽게 봤는데 어려웠던 문제..우선 복합 정렬 조건을 설계하는걸 잘 몰라서 어려웠고, 시간 초과 문제로 Scanner가 아닌 BufferedReader를 써야해서 낯설었다.빈도수를 Map에 저장하는 것까지는 초반 나의 생각과 동일했다. 그런데 빈도수 기

🐲 문제 바로가기사실 이 문제는 이분탐색으로 풀어야할지 몰라서 감을 잡기가 어려웠다.이 문제는 결국 예산 배정 상한선 중에서 가능한 최대 값을 찾아라! 라는 최적화 문제이다.가능한 상한선은 수직선 위의 연속된 정수 값이다.즉, 정답이 될 수 있는 범위가 정렬된 상태인

☁️ 문제 바로가기우선 초기에 한 번만 기간 안의 방문자 수를 계산해서 list에 넣고, 이후에는 슬라이딩 윈도우 방식으로 계산해서 list에 넣었다.초반에는 더 단순하게 했었는데,이건 슬라이딩 윈도우 방식이 아니라 직접 duration을 매번 새로 구해서 저장한 방식

✈️ 문제 바로가기처음에 문제 이해가 잘 안가서 조금 시간이 걸렸던 문제,,나는 우선 들어오는 입력을 배열에 저장해두고,1부터 계속 증가하는 정수를 자릿수별로 cut해서 list에 저장함.그리고 list에 있는 수들이 현재 pointer가 가리키고 있는 입력의 수와 일

☁️ 문제 바로가기왼쪽먼저 탐색 후 먹을 햄버거가 없으면 오른쪽을 탐색하는 방법을 택했다.왼쪽의 경우, 가능한 거리에서 가장 왼쪽부터 탐색을 하고, 오른쪽은 반대로 가장 가까운 곳부터 탐색하도록 했다.ㄴ 이렇게 해야 최대한 많은 사람이 먹을 수 있음!calculateP

DFS란? Depth-First Search | 깊이 우선 탐색 모든 가능한 경로를 끝까지 탐색하는 재귀적 방식 예를 들어, 미로에서 출구를 찾는다고 하면 한 방향으로 쭉 들어가고, 막히면 돌아와서 다른 방향을 탐색하는 방식! 구조 핵심 요약 DFS 탐색 순서 스

🏎️ 문제 바로가기정말 오랜만에 푼 DFS.. 지구와 달 사이는 N x M 크기의 연료 맵으로 구성진우는 가능한 한 연료를 적게 소모해서 달에 도착해야 함단, 연속해서 같은 방향으로 이동 불가능이 문제는 한 칸씩 내려가면서 세 방향 중 하나를 선택해야 하므로, 모든

🏁 문제 바로가기재귀와 백트래킹 개념 및 문제 추천 : Velog 링크핵심 문제점전역 turnCnt:공집합 배제용으로 썼는데, 분기마다 증감/복원이 없어서 상태가 꼬임. 한 번 sum == S가 되어도 다른 가지에 영향을 주게 됨visited + prevIndex 조

부분수열/부분집합을 가장 직관적으로 뽑는 패턴."현재 원소를 포함한다 / 안 한다" 두 갈래로 분기하는 것이 특징.공집합 제외: picked > 0 조건으로 해결모든 순서는 idx로 자동 처리 -> visited 불필요부분집합 개수: 2^Nfor문 안에서 start를

🏁 문제 바로가기기존 코드에서는 depth가 M 과 같아지면 그때마다 출력하도록 했는데, 시간초과로 실패했다.그래서 StringBuilder를 활용해서 저장하고, 한 번에 출력하는 방식으로 수정했더니 통과되었다.그런 의미에서 복습해보는 StringBuilder!문자열