PS

    [BOJ] 1339 단어 수학 with C++

    [BOJ] 1339 단어 수학 with C++

    https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 이 글은 BOJ 1339 단어 수학 문제를 C++로 풀이한 글입니다. 풀이 처음 문제를 봤을 때 어떻게 풀어야 할 지 바로 감이 오는 문제는 아니었다. 문제 풀이 방법이 떠오르지 않을 때 쓸수 있는 자료구조를 고민해 보고 모든 경우의 수를 다 고려하는 브루트 포스로 해결가능 한지 먼저 고려해 보는 편인데, 해당 문제의 경우 하나의 숫자는 하나의 알파벳이랑만 매칭되고 또한 주어지는 단어의 개수..

    [BOJ] 2636 치즈 with C++

    [BOJ] 2636 치즈 with C++

    https://www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 이 글은 BOJ 2636 치즈를 C++ 로 풀이한 글입니다. 풀이 문제를 보면 기본적으로 전형적인 그래프 탐색 알고리즘 문제라는 것을 알 수 있다. 기본적으로 매커니즘은 공기 접촉 -> 접촉 치즈 사라짐 -> 공기 접촉 -> 치즈 사라짐을 반복된다. 문제에서 요구하는 것은 최종 걸리는 시간과 마지막 한 시간 전 치즈의 양이다. 매시간에 동시에 치즈가 없어져야 하므로 처음 접근은 DFS로 외곽에 존재하는 모..

    [BOJ] 16236 아기 상어 with C++

    C++을 이용해 BOJ 16236 아기 상어 문제를 풀이한 글입니다. 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 ..

    [BOJ] 14226 이모티콘 with C++

    C++를 이용한 BOJ 14226 이모티콘을 풀이한 글입니다. 문제 영선이는 매우 기쁘기 때문에, 효빈이에게 스마일 이모티콘을 S개 보내려고 한다. 영선이는 이미 화면에 이모티콘 1개를 입력했다. 이제, 다음과 같은 3가지 연산만 사용해서 이모티콘을 S개 만들어 보려고 한다. 화면에 있는 이모티콘을 모두 복사해서 클립보드에 저장한다. 클립보드에 있는 모든 이모티콘을 화면에 붙여넣기 한다. 화면에 있는 이모티콘 중 하나를 삭제한다. 모든 연산은 1초가 걸린다. 또, 클립보드에 이모티콘을 복사하면 이전에 클립보드에 있던 내용은 덮어쓰기가 된다. 클립보드가 비어있는 상태에는 붙여넣기를 할 수 없으며, 일부만 클립보드에 복사할 수는 없다. 또한, 클립보드에 있는 이모티콘 중 일부를 삭제할 수 없다. 화면에 이모..

    [BOJ] 1422 숫자의 신 with JavaScript

    JavaScript를 이용한 BOJ 1422 숫자의 신을 풀이한 글입니다. 문제 숫자의 신은 여러명이 있지만, 그 중에 자연수의 신은 오세준이다. 오세준은 자연수의 신으로 오래오래 살다가 어느 날 음수의 신과 전쟁을 하게 되었다. 오세준은 음수의 신 이다솜을 이기기위해서 큰 숫자를 만들기로 했다. 오세준은 지금 K개의 자연수를 가지고 있다. 오세준은 K개의 수 중에 정확하게 N개의 수를 뽑아내서 그 수를 붙여서 만들 수 있는 수중에 가장 큰 수를 만들고자 한다. 같은 수를 여러 번 이용해도 된다. 단, 모든 수는 적어도 한 번은 이용되어야 한다. 오세준이 현재 가지고 있는 K개의 수가 주어졌을 때, 이 수를 적어도 한 번 이상 이용해서 만들 수 있는 수 중에 가장 큰 수를 출력하는 프로그램을 작성하시오...

    [programmers] 가장 먼 노드 level3 with JavaScript

    JavaScript를 이용한 programmers level3 가장 먼 노드를 풀이한 글입니다. 문제 설명 개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한 사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행..

    [programmers] 네트워크 level3 with JavaScript

    JavaScript를 이용한 programmers level3 네트워크를 풀이한 글입니다. 문제 설명 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 ..

    [BOJ] 11726 2×n 타일링 with JavaScript

    JavaScript를 이용한 백준 11726 2×n 타일링 문제를 풀이한 글입니다. 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 풀이 초기 접근 2x1 타일의 경우의 그냥 빈 곳에 넣으면 되지만 1x2 타일의 경우 한곳에 놓게 되면 무조건 2개를 놓아야 한다. 이를 생각해서 2x1을 a, 1x2 2개 묶음을 b로 생각해서 2x5 놓는다고 생각하면 b = 0 aaaaa b = 1 aaab aaba abaa baaa b = ..

    [BOJ] 구간 합 구하기 4 with JavaScript

    [BOJ] 구간 합 구하기 4 with JavaScript

    JavaScript를 이용한 백준 11659 구간 합 구하기 4 문제를 풀이한 글입니다. 문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N 풀이 처음 해당 문제를 읽었을 때 떠오르는 가장 직관적인 방법은 입력된 수를 배열에 저장하고 각각의 케이스마다 주어진 범위 만큼 배열의..

    [BOJ] 11047 동전() with JavaScript

    [BOJ] 11047 동전() with JavaScript

    JavaScript를 이용한 백준 11047 동전() 문제를 풀이한 글입니다. 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 풀이 처음 문제를 읽고 방법을 떠올리때 가장 처음 드는 직관적인 방법은 큰 동전부터 차..