일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 자류구조
- 백준
- Async/Await
- 1302
- 함수 이놈
- 1668
- 탐욕 알고리즘
- event loop
- 렉시컬 스코프
- 동적계획법
- 1931
- 함수 선언문
- 호이스팅
- 비동기처리
- baekjoon
- setTiemOut
- 1543
- 함수 parmater
- 1236
- 1904
- 함수 arguments
- 1568
- 11047
- html5
- 9461
- 11399
- 유사배열
- 2667
- javascript
- 배열같은배열아닌너
- Today
- Total
목록알고리즘 (15)
두치의 개발공부
문제 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 문제풀이 집을 만날 때 마다(값이 1) 주변에 있는 값을 탐색하여(위, 아래, 오른쪽, 왼쪽) 1이 몇개나 근접 해 있는지 확인 하면 된다. 한번 방문한 집은 또 방문하면 안되기 때문에 방문 여부를 체크하는 이차원 배열도 따로 만들어서 방문여부를 관리한다. 탐색 알고리즘 중 DFS를 사용하여 문제를 풀면 된다. DFS는 재귀용법을 이용하여 풀이를 많이 하므로 본 문제에서도 stack 자료구조를..
문제 https://www.acmicpc.net/problem/1236 1236번: 성 지키기 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는 .은 빈칸, X는 경비원이 있는 칸이다 www.acmicpc.net 문제풀이 모든 행과 열 에서 경비원을 다 세울 수 있는 경우의 수를 따져야한다. 처음에 문제를 자세히 안 읽고 행만 따지고 예제를 입력하였는데 다 통과하여 제출하였더니 실패하여 당황하였다... 문제를 처음부터 꼼꼼히 읽도록 하자. 풀이는 행과 열에서의 각각의 경우에서 경비원을 세울 수 있는 수를 카운트 하여, 둘 중에 큰 수를 반환하면 된다. 행과 열중 어디에 놓든간에 큰 수를 선..

문제 https://www.acmicpc.net/problem/1668 1668번: 트로피 진열 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열 www.acmicpc.net 문제 풀이 처음에 문제를 보면 무슨 소리인지 잘 모르겠으나 그림을 그려보면 어렵지 않게 이해할 수 있다. 왼쪽에서 봤을 때 보이는 트로피는 1,4,5,7 로 4개이다. 오른쪽에서 봤을 때 보이는 트로피는 1,7 로 2개이다. 본인보다 더 큰 트로피가 있는 경우에만 카운트 해 주면 된다. 왼쪽에서 먼저 체크 후 배열을 reverse한 후 다시 체크 하면 오른쪽에서 본 트로피를 확인할 수 있다. 똑같은 ..
문제 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 문제풀이 가장 많이 팔린 책이 여러권일 때 사전순이기 때문에 먼저 입력받은 책들을 sort한 후 시작하였다. 먼저 배열의 첫번째 책을 변수로 할당하고 입력받은 책들을 반복문 돌면서 지금 책과 반복문의 책이 같으면 count를 +1 하고, 같지 않으면 count를 1로 바꿔준다. 현재의 count(nowCnt)가 가장 많이 팔린 책의 count(maxCnt)보다 크면 책 이름을 바꿔준다..
문제 https://www.acmicpc.net/problem/1568 1568번: 새 N마리의 새가 나무에 앉아있고, 자연수를 배우기 원한다. 새들은 1부터 모든 자연수를 오름차순으로 노래한다. 어떤 숫자 K를 노래할 때, K마리의 새가 나무에서 하늘을 향해 날아간다. 만약, 현 www.acmicpc.net 문제 풀이 새들이 오름차순으로 증가하는 만큼 나무에서 날아가게 된다. 14마리의 새가 있었을 경우 1,2,3,4,1,2,1 해서 총 7초가 걸린다. 4에서 1이 되는 이유는 나무에 남아있는 새의 수(14 - (1+2+3+4)) 가 4마리 이기 때문에 5마리가 날아갈 수 없으므로 다시 1마리로 바꿔주는 경우이다. 소스코드 const answer = (input) => { let treeBird = N..
문제 https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 문제풀이 전체 문자열에서 찾으려는 문자를 찾아야 한다. 전체 문자열에서 index 0부터 시작하여 문자의 길이만큼 잘라서 찾으려는 문자와 같다고 하면 index를 문자의 길이만큼 더하여 오른쪽으로 이동하고, 찾으려는 문자와 같지 않다고 하면 index에 +1을 하여 오른쪽으로 1칸씩 이동하면 된다. 위 과정을 (전체 문자열 - 현재 index > 찾으려는 문자열의 길이) 일 때까지 계속 반복하면 ..
문제 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제풀이 최솟값을 구하는거기 때문에 빼는 값이 최대인 경우를 구하면 총 합의 최솟값을 구할 수 있다. 우선 -로 split하여 - 뒤에 괄호로 묶일 수 있는 + 연산자를 나눈다. ex) "55-50+45-20-10+30" => [55,50+45,20,10+30] 그 후에 +가 섞여있는 문자열을 +로 split한 후 합 연산을 한다. ex) [55,50+45,20,10+30] => [55..
문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제풀이 하나의 회의실에 여러개의 회의 일정이 있고 이 일정을 최대로 잡을 수 있도록 한다. 회의를 최대로 할려면 짧은 회의를 많이 잡는게 효율적이다. 등록된 회의를 아래 기준으로 정렬한다. 1. 제일 빠르게 끝나는 회의 순서 2. 끝나는 시간이 같을 시에는 시작 시간이 빠른 순서 이렇게 정렬하여 순서대로 회의를 잡는다. 시작 시간이 이전 종료 시간보다 나중이면 새로운 회의이다. 코드 const answer = ([n, ...arr]) => { const times = arr.map((list) => lis..
문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제풀이 매 순간 최적의 방법을 찾아내는 탐욕 알고리즘의 문제이다. 최소의 동전으로 가치의 값을 충족시켜야 하기 때문에 가치를 가장 큰 동전으로 많이 채워야 동전을 적게 쓸 수 있다. 오름차순으로 입력받는 동전을 내림차순으로 정렬하여 앞에서 부터 가치가 동전으로 나누어지는 값이면 몫은 사용된 동전 갯수로, 나머지값은 앞으로 채워..

문제 https://www.acmicpc.net/problem/11399 11399번: ATM 첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000) www.acmicpc.net 문제풀이 탐욕 알고리즘을 적용하여 풀면 문제를 해결 할 수 있다. 지금 당장 시간이 가장 적게 걸리는 사람의 순서를 앞으로 하여 기다리는 시간을 최소화 하면 총 걸리는 시간을 최소화 할 수 있다. 처음에 문제를 풀 때는 각각의 사람이 기다린 시간과 소요되는 시간을 배열에 넣어서 제일 마지막에 더하는 방법으로 풀었고, 두번째에는 다른 사람들이 푼 풀이를 보니 이중 for문으로 간략하게 풀었길래 좀 더 좋은 풀이인 거 같아 ..