boj

    [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개의 수가 주어졌을 때, 이 수를 적어도 한 번 이상 이용해서 만들 수 있는 수 중에 가장 큰 수를 출력하는 프로그램을 작성하시오...

    [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원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 풀이 처음 문제를 읽고 방법을 떠올리때 가장 처음 드는 직관적인 방법은 큰 동전부터 차..