본문 바로가기
728x90
반응형

전체 글242

DFS/BFS (깊이 우선 탐색/너비 우선 탐색) 이 문제를 다 풀고 나서 다른 사람들이 짜놓은 코드를 보는데 'DFS'라는 개념이 등장했다. 이전부터 어렴풋이는 알고 있었지만 막상 코드를 읽으니 어떻게 돌아가는지 머릿속에 잘 그려지지 않았다. 어차피 공부해야 하는 내용이니 이참에 확실히 짚고 넘어가야겠다 싶어 정리해보았다. 先요약 DFS BFS 동작 원리 스택 큐 구현 방법 재귀 함수 큐 활용 🤔 DFS(Depth First Search, 깊이 우선 탐색) 🗣 그래프에서 깊은 부분부터 탐색하는 알고리즘. 스택 자료구조 활용. 동작 과정 탐색 시작 노드를 스택에 삽입하고 방문 처리 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리. 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드 pop 위의 과정 반복.. 2023. 1. 16.
[Baekjoon] 14500 테트로미노(자바스크립트/NodeJs) 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net 👨‍💻 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 .. 2023. 1. 16.
[Baekjoon] 1107 리모컨(자바스크립트/NodeJs) 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 👨‍💻 문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는 바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이 0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌.. 2023. 1. 15.
[Baekjoon] 3085 사탕 게임(자바스크립트/NodeJs) 3085번: 사탕 게임 예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다. www.acmicpc.net 👨‍💻 문제 상근이는 어렸을 적에 "봄보니 (Bomboni)" 게임을 즐겨했다. 가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다. 사탕이 채워진 상태가 주어졌을 때, 상근이가 먹을 수 있는 사탕의 최대 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 보드의 크기 N이 주어진다. (3 ≤ N ≤ 50) 다음 N개 줄에는 보드에 .. 2023. 1. 15.
[Baekjoon] 2309 일곱 난쟁이(자바스크립트/NodeJs) 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net 👨‍💻 문제 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 입력 아홉 .. 2023. 1. 15.
[이코테] 그리디_1이 될 때까지(자바스크립트) 이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다. 이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고 이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 product.kyobobook.co.kr 문제 정답 코드 나의 풀이 풀이 1 풀이 2 문제 풀이 주어진 수 n에 대해 k로 최대한 많이 나눗셈을 시도하면 되는 문제이다. 나는 n이 1보다 클 동안 while 반복문을 돌면서 n을 k로 나눴을 때 나머지가 0이라면, 즉 나눠떨어진다면 n을 n에다 k를 나눈 몫으로 치환하고, 나눠떨어지지 않는다면 n을 .. 2023. 1. 13.
[이코테] 그리디_숫자 카드 게임(자바스크립트) 이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다. 이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고 이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 product.kyobobook.co.kr 문제 정답 코드 나의 답안 1 나의 답안 2 해답 1 해답 2 문제 풀이 먼저 for 반복문을 돌면서 각 행의 최솟값을 찾고, 그 최솟값들 중에서 최댓값을 뽑아내면 되는 문제이다. 최솟값과 최댓값 문제는 Math.min 및 Math.max 메서드를 활용하면 쉽게 풀 수 있다. 해답 1을 기준으로 설명하자면, .. 2023. 1. 12.
[이코테] 그리디_큰 수의 법칙(자바스크립트) 이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다. 이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고 이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 product.kyobobook.co.kr 문제 정답 코드 이전 나의 답안 나의 답안 답안 1 답안 2 문제 풀이 문제를 풀 때 가장 먼저 해야 하는 작업은 입력 받은 숫자들을 정렬하는 것이다. 왜냐하면 이 문제에서는 첫 번째로 큰 수와 두 번째로 큰 수만이 사용되기 때문이다. 나의 경우 만약 첫 번째로 큰 수와 두 번째로 큰 수가 같다면 첫 번째로 .. 2023. 1. 12.
[이코테] 그리디_거스름돈(자바스크립트) 이번 글은 '이것이 취업을 위한 코딩테스트다' 내의 문제를 풀고 정답 코드를 정리한 것입니다. 이것이 취업을 위한 코딩 테스트다 with 파이썬 | 나동빈 - 교보문고 이것이 취업을 위한 코딩 테스트다 with 파이썬 | IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인! 취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 product.kyobobook.co.kr 문제 입력 1260 500 100 50 10 출력 6 정답 코드 답안1 답안2 문제 풀이 나는 while 반복문을 통해 주어진 돈에서 가장 큰 단위 동전부터 차례대로 빼나가고, 작업을 수행할 때마다 cnt를 1씩 증가시켰다. 이때 돈이 현재 동전보다 작아진다면 인덱스를 증가시켜 동전 종류를 바꾸는 식으로 풀었.. 2023. 1. 12.
728x90
반응형