
브루트포스(brute force): 전체탐색 가능한 모든 경우의 수 전체탐색 1차시도 cnt를 두 번씩 저장하는 꼴이 되어 출력값이 이상해짐 다음과 같이 sum을 이용해 값을 저장하였어야했음 2차시도 시간초과: 전체탐색 하면 그럴 수 밖에 없음 https:/

스케쥴링 알고리즘 기법에 대해 알고 있었다면 쉬웠을 문제

파이썬 sort에 대해서 잘 알았으면 금방 풀렸을 문제

슬라이싱 할 때의 인덱스 범위와 리스트에서 요소 번호, 그리고 for문에서 range 범위가 각각 다르기 때문에 이 모든걸 고려해야하는 문제. 나중에 다시 풀어보면 좋을 것 같다

예전에 풀었던 문제라서 이번엔 def로 함수들을 구현해서 풀어보았다.

파이썬에서만 있는 함수 for-else문을 기억하자

reverse를 했을 때 하나의 변수로 reverse함수 적용한 것을 담았다면 none으로 출력이 됨. 따라서 word자체를 받아서 변수에 넣어야함 빈 문자열 선언은 " "으로 하기

입력문M배열에서 N배열에 있는 수 찾기. 정렬 후에 이분탐색(중간부터 찾기)으로 풀어야 함

처음의 배열을 False로 두고, 해당 배열의 요소 숫자에 맞는 요소를 True로 전환하는 방식으로 바꿈전체 배열의 길이가 31개로 제한되어있어서 loop돌면서 그대로 False인 요소의 위치를 찾는게 가능했던 것 같음False 배열을 31개로 둬야하는 이유: 파이썬의

맨 마지막 문장 END를 제외하고 문장의 단어를 다 역순으로 뒤집는 것reverse()를 사용하려고 하였으나, 슬라이싱 기법으로 단순하게 할 수 있었음reverse()는 제자리에서 배열을 뒤집기만 하고 None을 반환하는 특징이 존재리스트를 뒤집은 복사본을 만들고 싶다

그냥 ingredients로 해서 list그자체가 나옴→ 리스트 요소를 pop하여 print하는 방식으로 수정리스트의 요소를 한 번에 출력하는 방식 print(\*ingredients)도 있다고 함\++++strip과 split의 역할이 헷갈림 공부해야할 듯strip:


출력조건) 첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 출력한다.

입력조건) N은 10,000보다 작거나 같은 자연수이다. 따라서, 브루트포스💡 아이디어규칙: N = (9\*m)(m+1)하지만, 6666이라던가 중복되는 경우의 같은 경우 제외하기 힘듬런타임 오류(Runtime Error) 가 나는 이유는 입력 크기 제한과 루프 범위

배열을 그냥 찍는 게 아니라 이 모양 그대로 나와야 함 대괄호 \[ ] 쉼표 , 사이에 공백 Xslice는 reverse나 pop과 다르게 return이 없어서 따로 대입해줘야한다.R의 의미를 잘 생각해보면…배열을 뒤집는 게 아니라“읽는 방향만 바뀐다” 라고 볼 수 있

아이디어 → 최솟값을 찾고 그 값으로 배열 돌리기!TypeError: 'int' object is not iterablesetPrice = sum(setArr) \* 0.9하나의 리스트로 묶고 싶었음burger\[i], side\[i], drink\[i] → 각각 정수

나보다 앞에 있는 사람들까지 루프 돌면서 나보다 큰 사람 있으면 그 앞으로 이동하는 것이었음근데, 맨 처음으로 이동하는 것으로 잘못 생각하였음조건 잘 못 생각함

시작점을 0으로 바꿔야하는데 1로 그대로 두었음카운팅변수를 새로 초기화 시켜줘야하는데 함수 밖에서 선언해 누적이 되었음queue.push(\[nx, ny]);지금 찾은 집을 기준으로 나중에 그 주변(상하좌우)을 또 탐색하기 위해서(startX, startY)에서 출발해

미로 탐색에서 최단 거리를 구할 때는 BFS가 정석.BFS는 시작점에서 가까운 칸부터 차례대로 탐색하기 때문에, 처음으로 목적지에 도달했을 때의 거리가 곧 최단 거리DFS가 재귀를 사용한다면, BFS는 큐(Queue)를 사용합니다. JavaScript에서는 보통 배열의

(https://velog.velcdn.com/images/lemoncurdyogurt/post/15d8b0c0-3037-4ca9-8aec-6473cab684ae/image.png)lowerBound: "너 나랑 같거나 크니? 그럼 일단 네가 오른쪽 끝이야(r

1이상 양수 큰 수 순서대로 곱하고 나머지는 다 더하기→ 예제 4번을 보고 0이 있으면 음수와 곱해야하는 것을 깨달음→ 또 고민하다보니 음수가 두 개라면 작은 음수끼리 곱해야 큰 양수가 됨을 깨달음양수는 1 이상인 것들 중에서 큰 수끼리 곱하고 더하기음수가 짝수 개이면

for문으로 배열에 새로 값이 추가될 때마다 정렬 후, 가운데 값을 리턴→ 메모리 초과매번 sort()를 하는 대신, 정렬된 위치에 '삽입'만 합니다 (Insertion Sort 개념)이진 탐색을

while(true) 안에서 let smallestPrime = num;을 매번 초기화하고 있다는 점입니다. 이렇게 되면 smallestPrime이 증가하지 못하고 계속 제자리걸음while(true) 문을 사용해 "소수를 찾을 때까지 1씩 더하며 전부 확인한다"는 방식

1 ≤ min ≤ 1,000,000,000,000min ≤ max ≤ min + 1,000,000 특정 범위 내의 모든 소수(Prime Number)를 빠르고 효율적으로 찾아내는 알고리즘해당 수보다 작은 모든 수로 나누어 보아서 소수인지 판단하는 방법에라토스테네스의 체

결과Q. 어떻게 거리과 정점을 저장할 것인가JS의 Array는 동적 배열이라 인접 리스트를 구현하기에 매우 편리하지만, 정점이 100,000개일 때는 관리를 잘해야한다.Array 안에 Object를 담는 방식 (가독성 중시)가장 직관적인 방법입니다. 각 인덱스를 정점

\[1167. 트리의 지름] 문제와 푸는 방식은 같지만, 노드에 대한 정보를 받는 방식만 다른 문제

트리가 주어졌을 때, 노드 하나를 지울 것이다. 그 때, 남은 트리에서 리프 노드의 개수를 구하는 프로그램을 작성

* Inorder (중위 순회) : left Node -> root Node -> right Node * Postorder (후위 순회) : left Node -> right Node -> root Node * Preorder (전위 순회) : root Node

전위순회 트리결과를 후위순회 트리결과로 출력하는 문제

가능성이 없는 곳에서는 되돌아가고, 가능성이 있는 곳을 탐색하는 알고리즘

Inorder, Postorder, Preorder

재귀(Recursion) 구조가 아니라서 모든 조합을 탐색할 수 없음→ 어떻게 모든 조합을 탐색해야할까 백트랙킹 기법 사용"문자를 선택했을 때"와 "선택하지 않았을 때"를 모두 따져봐야함

여러 친구관계가 주어졌을 때, A->B->C->D->E의 관계가 존재하는지를 탐색하는 문제이다.하나의 친구에서 4개의 관계를 걸쳐 다른 친구로 통할 수 있는 경로가 있는가를 묻는 것정답이 될 수 있는 경우의 수는 1-2-4-5-6, 3-2-4-5-6 이 있을 것이다.이

왜냐면 queue는 항상 true → while(queue.length() > 0) 로 하기
불필요한 루프 제거벽을 세울 수 없는 곳(1이나 2가 있는 곳)을 매번 검사하지 않고, 오직 empty_spaces만 대상함수 호출 오버헤드 감소재귀 함수(makeWall)를 수만 번 호출하는 비용을 줄일 수 있음

자바스크립트에서는 Array.from()이나 fill() 메서드를 활용합니다.Array.from() 사용 (권장):JavaScriptmap() 사용:JavaScript주 대각선과 평행한 대각선 (↘ 방향)01, 12, 23 혹은 10, 21, 32처럼 주 대각선과 평행

부분합이 나올 수 있는 최소길이어야하는데, 길이를 비교하는 로직이 없음부분합을 키울 방법이 없다endIdx를 줄이면(-1): 전체 합이 감소startIdx를 늘리면(+1): 앞부분을 깎아내는 것이므로 전체 합이 감소let minLength = Infinity;

백준 스택 문제들 풀이 모음

shift()의 시간 복잡도 ($O(N)$), 인덱스를 가리키는 포인터(front 변수)를 사용하거나, 연결 리스트(Linked List) 구조를 직접 구현해야 함

1021. 회전하는 큐 고민했던 부분: 18258문제 풀었을 때 shift()쓰면 시간초과나서 포인터를 이동시키면서 head랑 tail위치를 기록함 해당 문제는 shift()사용해도 시간초과 안남 왜? 오히려 포인터로 하려고 하면 firstIdxOut이랑 moveLeft, Out할 때 꼬임 shift 사용 유무 판단 기준 보통 알고리즘 문제의 제한...

합의 절댓값이 현재 최솟값보다 작으면 정답 업데이트

끝나는 시간이 먼저인 회의시간부터 정렬하자

R사이에 K를 제거해서 부분 수열을 만드는게 고민되는 지점이었음투포인터 쓰는 개념이 넘 어려웠음

외우자

1. 치킨가게가 들어있는 배열에서 임의로 M개 선택 2. 선택한 가게들에 대해서 치킨거리 구하기 3. 치킨거리의 값이 최소인 경우 totalMinDistance 업데이트

정렬문제 LV2.

15649. N과 M(1) 15650. N과 M(2) 15652. N과 M(4) 9663. N-Queen

치킨가게가 들어있는 배열에서 임의로 M개 선택선택한 가게들에 대해서 치킨거리 구하기치킨거리의 값이 최소인 경우 totalMinDistance 업데이트c = start: 중복과 순열 방지조합은 A, B와 B, A를 같은 것으로 봅니다. \- 반복문이 항상 0부터 시

이진 트리를 기반으로 한 자료구조부모 노드가 자식들보다 작거나 같은 구조가장 작은 값이 부모 노드에 위치하는 자료구조메소드는 새로 들어온 노드가 최소 힙의 조건에 맞는 자리를 찾도록 도와주는 메소드새로 들어온 값의 자리 (this.heap.length - 1)부터 시작

섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 \* 2)모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞음모두 섞었어도 K가 되지 못하면 -1, 아니라면 섞어야 하는 최소 횟수를 returnim

처음 아이디어에서는 쇠막대기 닫히는 기준으로 내부에 몇개의 레이저가 있는지 세는 거였음 최종 아이디어에서는 레이저가 닫히는 기준으로 몇개의 쇠막대기를 넣었는가 갯수 세는 것 → 몇 개의 쇠막대기가 해당 레이저로 잘리는가?

연산 실행 중에 큐가 비어있으면 return \[0, 0] 이 아니라 연산 무시연살 실행 완료 후 큐가 비어있을 때 return \[0, 0] 하기queue에 한 개만 있는 경우 maxNum = queue.pop() 실행의 경우minNum은 undefined가 될 수

작업이 필요한 날짜:(7, 3) (9)(5) (10, 1, 1) (20, 1)이렇게 배포날짜 기준으로 개발 완료 기능들임배포날짜와 현재 작업이 필요한 날짜 비교배포날짜 >= 작업필요날짜하나의 묶음에 넣어야함 따라서, jobCompleted++배포날짜 < 작업필요날

우선순위큐로 풀어야하는 문제인데 사용안하고 일반 정렬로 풀었음 -> 추후에 우선순위큐로 풀어야할 것

수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다.마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의

map.size 배열의 length와 같은 함수임.

'119', '1195524421', '97674223' 다음과 같이 문자열 정렬하여, 탐색할 값의 다음의 값이 탐색할 값으로 시작하는지 확인.시작하는 경우 바로 false리턴 후 break정렬이 "옆에 있는 놈과 비교"라면, 해시는 "내가 가진 모든 조각들이 전화번

중복값을 없애주고 새로운 배열을 만드는 함수맵이랑 세트로 많이 나옴

\["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]다음과 같이 입력문이 들어오는 상황에 있어서 다음과 같이 분리하려고 하였으나 L
* 해시테이블: 키(key)와 값(value) 형태의 데이터 구조를 가짐. * 해시함수: 문자열 또는 숫자로 된 키를 배열에서 사용되는 유효한 인덱스, 작은 숫자로 바꿔주는데 사용된다.

코드트리 청약 챌린지 https://www.codetree.ai/ko/no-free-lunch-2026/?ref=PQBJ8N코드트리 청약 챌린지를 하면서 이번주차는 갭체크를 해보았습니다.갭체크는 내가 얼마나 이 알고리즘에 대해서 잘 아는지 테스트를 해볼 수 있

코드트리에서 약한 알고리즘 극복하기갭체크를 통해 내 약한 알고리즘을 파악할 수 있고, 이를 통해 추천 챕터를 받아 볼 수 있습니다. 그 중에서 누적합 알고리즘에서 어려웠던 문제의 풀이과정에 대해서 작성해보고자 합니다.

🔗 코드트리에서 알고리즘 공부하러가기 이제 우리는 갭체크를 통해서 약한 알고리즘을 찾고, 해당 알고리즘이 있는 트레일을 추천받아서 차례로 공부를 하고 있을 것이다. 알고리즘 문제를 풀다보면, 다시 보고 싶은 개념 혹은 유독 어려웠던 문제, 개선점을 찾고 싶은 문제

처음 갭체크를 받았을 때 솔직히 충격이었다. 완전탐색 I도 불안정하다는 피드백, 그리고 완전탐색 II는 아예 손도 못 댄다는 진단. 눈앞이 막막했다.그리고 한 달 뒤, 두 번째 갭체크 진단을 실행해보았다.단순히 점수가 오른 게 아니었다. 평가의 기준선 자체가 한 레벨

Deque(데크)는 double-ended-queue의 줄임말로, 양방향에서 데이터를 처리할 수 있는 queue형 자료구조이다.
일단 끝냈다는 것 자체가 신기하다. 거창하게 "알고리즘 마스터가 됐다" 같은 말은 못 하겠고, 그냥 — 하루하루 풀이 인증을 빼먹지 않고 7주를 채웠다는 것만으로도 나한테는 의미가 크다. 취업 준비하면서 이것저것 동시에 굴리다 보면 꾸준함이 제일 어려운 일이라는 걸