🤜 코테

하고싶은 거 다하며 살자
백준 문제 풀이 : 쉬운 최단거리 (14940)
문제 접근- '각 지점에서 목표지점까지의 거리를 출력한다.' 를 읽고 처음에는 각 지점에서 목표지점(2) 까지 거리를 세면 되나?라고 생각했는데, 그렇게 되면 매번 모든 지점에서 계산해야 하고, 매번 비교를 해줘야 하는 게 비효율적이라고 생각하였음.- 목표지점으로부터 갈 수 있는 거리까지의 거리를 카운트하면 되겠다고 생각하게됨.- 아 물론, bfs 로 돌 수있도록 큐에 넣고 근처를 돌도록 코드를 짜주었다. 틀린 이유- 나는 계속 런타임 에러(TypeError)가 떴다. 처음에는 이 런타임에러가 무슨 의미인지 어떻게 해결해야 할지 몰라서 너무나도 막막했다. 런타임 에러 발생 원인타입 관련 에러라고 한다. 나의 경우에도 배열을 돌면서 잘못된 위치의 요소를 지정해주지 않았나 추측했다.함수에 전달된 피연산자 또..
백준 문제 풀이 : 쇠막대기 (10799)
·🤜 코테
문제 접근처음우선 stack에 넣는다.현재 괄호가 "(" 라면 쇠막대기를 하나 더한다현재 괄호가 ")"라면 전 괄호와 쌍이 맞을 때 기존 쇠막대기 수를 2배한다.stack에 넣은 쌍 2개를 꺼낸다. 문제 풀이 실패 요인비슷하지만, 쇠막대기 개수를 계산하는 포인트가 달랐던 것 같다.  stack에 모두 넣고 뺀다는 게 좀 실패 요인 이었던 것 같다.아깝다. 좀만 더 스택 자료구조에 대해서 알고 있었다면 풀 수 있었을텐데 다음에 또 다시 풀어본다. 문제 접근 풀이괄호가 "("이면 stack에 넣는다.괄호가 ")"이면 전 괄호를 본다.전 괄호가 "("이면 레이저이다. stack을 pop하고 count에 stack 배열 길이를 더해준다.전 괄호가 ")"이면 쇠막대기의 끝이다. stack을 pop하고 count에..
백준 문제 풀이 : 설탕 배달 (2839)
·🤜 코테
재도전필요!⭐️ 나의 문제 풀이우선 최소 봉지의 개수를 구하기 위해 5킬로 봉지를 최대로 들어야 한다는 것은 파악했다. 하지만, 문제 풀이 구현 방법에 대해서 알기 어려웠다.  - 처음 아이디어 : N을 5로 최대한 나누고 몫을 센다. 그리고 N을3으로 최대한 나누고 몫을 센다. (실패)- 두번째 아이디어 : 5의 배수, 3의 배수, 그외의 경우를 분기처리한다. (비효율...실패)- 구글링 : N이 0보다 클때까지, 3을 뺀고 봉지 수를 더한다. 5의 배수인 경우에는 3을 빼기 전에 5로 나누고 몫을 센다. 그리디 문제 유형으로 다 해본다는 마음으로 접근했다. 그러나 나누기만 생각했지 빼기를 생각하지 못했다... 아쉽다. 어려운문제라고 생각하지 않았는데 바로 틀려서ㅠ 문제는 역시 많이 많이 풀어봐야 한다..
백준 문제 풀이 : 셀프 넘버 (4673)
·🤜 코테
나의 문제 풀이 방법내가 이문제를 틀린 이유는, n의 각 자리의 수가 1개에서 4개까지인 경우를 모두 고려하지 않았기 때문!처음에 풀 때, 문제의 예제만 보고 2자리 수인 경우에만 고려했다....ㅠ 즉, 이 문제의 핵심은 각 자리의 수를 구해서 더하는 함수를 구현하는 것이었다. 그것을 코드로 구현하는 게 도저히 생각나지 않아 구글링을 통해 해결했다. 풀이function d (n) { // d는 n + 각 자리수의 숫자 let num = n; let result = 0; for(let i=0;ii+1);console.log(numbers.filter((x)=>(!arr.includes(x))).sort((a,b)=>(a-b)).join('\n')); TIL쉽게 생각했다가 바로 틀려버린..
백준 문제 풀이 : ATM (11399)
·🤜 코테
나의 문제 풀이 방법문제 풀이 방법을 고민하다가 혹시.. 순열인가? 고민했다. 최솟값을 구하라고 하니까 모든 경우의 수를 다 계산해보고 그 중에 최솟값을 구하는 건가라고 처음에 생각했다. 하지만 N이 최대 1000이라는 조건을 대입했을 때, 시간 초과가 날 것이라고 예상되어 다른 방법이라는 것을 알 수 있었다. 생각해보니, 최솟값은 소요시간 최댓값들을 제일 적게 더하면 최솟값이 나오지 않나? 라는 생각이 들었고 '아, 정렬이구나' 알 수 있었다.정렬의 기준은? 바로 소요시간이러한 생각의 흐름으로 인해 소요시간 정렬 -> 각 순번에 따른 소요시간 계산 -> 최솟값 구하기를 구현하면 되겠다고 생각할 수 있었다. 풀이const fs = require('fs');const input = fs.readFileSy..
백준 문제 풀이 : 회의실 배정 (1931)
·🤜 코테
내 문제 풀이 방법정렬과 그리디를 사용하면 되겠다는 감이 왔지만, 코드로 구현하는 데 애를 먹음;;우선 정렬 방법 자체가 어려웠다. 문제를 풀 수 있도록 정렬하려면 회의실의 시작시간과 끝시간을 오름차순으로 정렬해야한다.조건은 아래와 같다.종료 시간 기준으로 오름차순 정렬종료 시간이 같은 두 회의 중, 시작 시간이 더 빠른 회의를 선택해야 최대로 회의실을 배정하기 때문에 시작 시간도 오름차순으로 정렬조건은 알겠는데, 이를 코드로 구현하는 게 어려웠다...이후에는 종료 시간을 추출한 뒤, 다음 회의실의 시작 시간이 종료 시간보다 크면 개수를 카운트하면 된다. 풀이/** * 졍렬과 그리디로 푼다. * 1. 정렬 : 최대개수를 출력하기 위해 * 2. 반복문 통해 비교 */const fs = require('fs..
백준 문제 풀이 : 수 찾기 (1920)
·🤜 코테
재도전필요!⭐️ 나의 문제 풀이 방법처음에는 너무나 당연하게도 이중 for문 사용하려고 했는데, 입력 값 범위를 보니 10만x10이면 백억으로 시간 초과되잖아? 라는 생각에 어떻게 풀어야할지 너무 막막했다.정렬도 해보고, 단일 for문 돌려봤지만 해답을 모르겠어서 결국 구글링! 문제 풀이 방법해답은 '이분 탐색(Binary Search)' 이었다. 이분 탐색은 정렬되어있는 리스트에서 범위를 절반씩 줄여가며 탐색하는 알고리즘!start, end, mid 카운터를 사용한다! 해당 알고리즘은 다시한번 공부하기! 풀이const n = Number(input[0]);const nArr = input[1].split(' ').sort();const m = Number(input[2]);const mArr = inp..
백준 문제 풀이 : 스택 (10828)
·🤜 코테
나의 문제풀이 방법주어지는 명령어가 맞다면 해당 명령어에 맞는 수식 진행하도록 구성해야겠다고 생각함.문제는 어렵지 않다고 생각함. 각 명령어에 맞게 코드를 짜주면 되었기 때문!다만, 생각하지 못했던 '시간초과' 에러가 떠서 바로 구글링해봤음. 신기하게도 다른 개발자 분의 답변을 확인해보니 console.log(); 수행 시에도 시간이 많이 소요되어 console.log()는 가능한 한번만 사용하는 게 좋다고 함!앞으로 console.log()를 쓰지 않고 배열에 답변을 쌓는 방법으로 구현해야겠다 문제 풀이const fs = require('fs');const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');const n = Numb..
wnwlals13
'🤜 코테' 카테고리의 글 목록