728x90 전체글71 [Algorithm] 백준 3190번(BOJ 3190) 뱀 문제풀이!! (java) 안녕하세요. Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 3190번 뱀 문제를 풀어보겠습니다. 문제에 대한 링크는 아래에 있으니 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/3190 1. 문제 설명 문제를 읽어보셔서 아시겠지만 특별한 알고리즘보다는 주어진 내용에 맞게 구현하는 것에 초점을 두고 코드를 작성하면 어렵지 않게 풀 수 있습니다. 문제에서 주어진 조건 말고 따로 주의해야 할 점은 뱀이 방향 전환을 하고 나면 머리와 꼬리가 다른 방향을 바라보면서 매 초마다 움직이게 되고, 머리가 방향 전환을 시작한 위치에서 꼬리가 방향 전환을 할 수 있도록 구현해야 한다는 점입니다. 저는 이 부분을 List를 사용해서 머리의 방향 전환이 일어.. Algorithm & Data Structure/문제풀이 2021. 8. 25. [Algorithm] 백준 12100번(BOJ 12100) 2048(easy) 문제 풀이(Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 12100번 2048(easy) 문제를 Java로 풀어보겠습니다. 문제에 대한 링크는 아래에 있으니 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/12100 1. 문제 설명 해당 문제는 구현 문제로서 주어진 내용에 알맞게 구현만 하면 풀 수 있습니다. 문제에서 주어진 제약조건은 다음과 같습니다. 한 번에 한 방향으로만 이동이 가능하며 이동할 때 모든 블록이 같이 움직임 이동하는 과정에서 같은 값을 가진 블록을 만나면 이동방향에 있는 블록의 위치로 값이 합쳐짐 이동하는 과정에서 한번 합쳐진 적이 있던 블록은 다시 같은 값을 만나도 합쳐질 수 없음 위의 3개의 조건을 고려해서 코드로 .. Algorithm & Data Structure/문제풀이 2021. 8. 22. [Algorithm] 백준 4673(BOJ 4673) 셀프 넘버 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 백준 온라인 저지에 있는 4673번 셀프 넘버 문제를 풀어보겠습니다. 문제에 대한 링크는 아래에 있으니 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/4673 1. 문제 설명 문제에서 요구하는 바는 10000까지의 숫자 중 셀프 넘버를 출력하는 것입니다. 셀프 넘버는 문제에서 알려준 대로 생성자가 없는 숫자입니다. 배열의 인덱스를 각각의 숫자로 사용해서 구하면 쉽게 구할 수 있습니다. 딱히 어려운 부분은 없으므로 바로 코드로 작성해보겠습니다. 2. Java로 문제 풀이 package study.blog.codingnojam.algorithm.boj; import java.io.BufferedWriter; impo.. Algorithm & Data Structure/문제풀이 2021. 8. 10. [Algorithm] 백준 9012(BOJ 9012) 괄호 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 9012번 괄호 문제를 풀어보겠습니다. 문제에 대한 링크는 아래에 있으니 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/9012 1. 문제 설명 문제에서 요구하는 바는 주어진 문자열이 괄호가 전부 짝이 맞는지? 짝이 맞다면 전부 닫혀있는지?를 판단해서 YES와 NO를 출력하면 되는 문제입니다. 문제에서 얘기하는 VPS가 되는 조건은 당연히 ()() (()) 이런 식으로 전부 잘 닫히는 경우니 VPS가 아닌 경우를 걸러내면 쉽게 풀 수 있습니다. VPS가 아닌 경우는 다음과 같습니다. 괄호의 시작이 ")"로 시작하는 경우 "(()))" , "((())" 이런 식으로 괄호의 짝이 안 .. Algorithm & Data Structure/문제풀이 2021. 8. 10. [Algorithm] 백준 9095번 (BOJ 9095) 1,2,3 더하기 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 9095번 1,2,3 더하기 문제를 풀어보겠습니다. 문제에 대한 내용은 아래 링크를 통해서 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/9095 1. 문제 설명 이번 문제는 주어진 양의 정수를 1,2,3으로 더해서 표현할 수 있는지? 있다면 몇 가지의 방법의 수가 있는지를 출력하는 문제입니다. 그냥 단순하게 1,2,3을 더하는 모든 경우의 수를 고려하면 됩니다. 한 가지 유의할 점은 1+2+1과 1+1+2는 다른 경우라는 걸 알고 계셔야 합니다. 저는 재귀 형태로 메서드를 작성해서 구현했습니다. 그럼 코드를 작성해보겠습니다. 2. Java로 문제 풀이 package study.blog.cod.. Algorithm & Data Structure/문제풀이 2021. 8. 9. [Algorithm] 백준 17135번 (BOJ 17135) 캐슬 디펜스 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 17135번 캐슬 디펜스 문제를 풀어보겠습니다. 문제 링크는 아래에 있으니 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/17135 1. 문제 설명 해당 문제는 3명의 궁수를 배치해서 가장 많은 적을 제거해야 하는 것이 목표입니다. 궁수를 배치할 수 있는 공간은 N+1행에만 배치할 수 있고, 문제에서 주어지는 행과 열의 전체 길이가 크지 않으므로 모든 경우의 수를 고려해서 가장 많은 적을 제거하는 배치를 찾아내면 됩니다. 모든 경우의 수를 고려하는 문제를 풀 때 기본적으로 재귀 형태의 메서드로 접근하면 손쉽게 모든 경우의 수를 체크해볼 수 있습니다. 코드를 작성할 때 주의해야 할 점은 모.. Algorithm & Data Structure/문제풀이 2021. 8. 7. [Algorithm] 백준 15686번(BOJ 15686) 치킨 배달 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 이번에 풀어볼 문제는 백준 온라인 저지에 있는 15686번 치킨 배달입니다. https://www.acmicpc.net/problem/15686 1. 문제 설명 문제에서 요구하는 바는 도시의 치킨 거리가 최소일 때의 값을 구하는 것입니다. 도시가 최대로 가질 수 있는 치킨집의 개수는 M으로 정해져 있으므로, 도시 전체의 치킨집 중에서 M개의 치킨집을 선택했을 때 치킨 거리가 최솟값이 되면 됩니다. 도시의 크기와 치킨집의 개수가 크지 않기 때문에 모든 경우의 수를 탐색하는 브루트 포스 알고리즘으로 접근해서 풀 수 있습니다. 경우의 수를 탐색하기 위해 저는 재귀 메서드로 구현했습니다. 한 가지 유의사항은 M개의 치킨집을 고르고 가정집에서의 치킨 거리를 구할 때, .. Algorithm & Data Structure/문제풀이 2021. 8. 1. [Algorithm] 백준 1005번(BOJ 1005) ACM Craft 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 1005번 ACM Craft문제를 풀어보겠습니다. 아래에 있는 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/1005 1. 문제 설명 해당 문제는 특정 건물을 가장 빨리 건설하는 시간을 구해야 하는 문제입니다. 건물을 건설하는 데는 건설 규칙이 있습니다. 예를 들어 4번 건물을 짓고 싶으면 1,2,3번이 모두 지어져야 한다던가, 8번을 짓고 싶으면 9번과 5번을 지어야 한다던가 등 이런 선후관계가 규칙으로 정해져 있습니다. 각각의 건물들을 노드로 본다면 선후관계가 있는 그래프가 되고, 이럴 때 위상 정렬(Topological Sort)을 사용할 수 있습니다. 위상 정렬은 말 그대로.. Algorithm & Data Structure/문제풀이 2021. 7. 31. [Algorithm] 백준 2252번(BOJ 2252) 줄 세우기 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 2252번 줄 세우기 문제를 풀어보겠습니다. 1. 문제 설명 문제를 설명하기에 앞서 아래 링크로 가셔서 문제를 먼저 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/2252 해당 문제는 학생들을 키 순서대로 세우면 되는 문제입니다. 이를 위해 문제에서는 어떤 학생이 어떤 학생 앞에 서야 하는지 조건도 주고 있습니다. 가장 단순하게 구현을 하면 학생수만큼의 길이를 가진 배열을 만들고 문제에서 조건이 주어질 때마다 배열의 원소들의 위치를 바꿔주면 됩니다. 그러나 이렇게 하면 시간 복잡도에서 당연히 초과 판정을 받게 될 겁니다. 그렇기 때문에 알고리즘을 써야 하고 이때 사용할 수 있는 알고리즘은 위상.. Algorithm & Data Structure/문제풀이 2021. 7. 31. [Algorithm] 위상정렬(Topological Sort)을 Java로 구현해보자!! 안녕하세요 Coding-Knowjam입니다. 오늘은 그래프 알고리즘인 위상 정렬을 Java로 구현해보겠습니다. 1. 위상 정렬(Topological Sort)이란? 1.1 개념 우리가 알고리즘을 공부할 때 그래프에 관련된 문제를 많이 접하게 됩니다. 위상 정렬(Topological Sort) 또한 그래프와 관련된 알고리즘 중 하나입니다. 그렇다면 위상 정렬(Topological Sort)은 언제 사용할까요?? 바로 선후관계가 정의된 그래프 구조에서 정렬을 하기 위해 사용할 수 있습니다. 글로만 보면 이해가 잘 되지 않으실 테니 그림과 함께 설명하겠습니다. 위와 같은 그래프가 있을 때, 노드마다 연결된 간선에 방향이 있고 어떤 특정 노드를 방문하기 위해서는 해당 노드에 진입 가능한 노드들을 모두 방문한 후.. Algorithm & Data Structure/이론 2021. 7. 31. [Algorithm] 백준 15683번(BOJ 15683) 감시 (Java) 안녕하세요 Coding-Knowjam입니다. 이번에 풀어볼 문제는 백준 온라인 저지 15683번 감시 문제입니다. 1. 문제 설명 문제를 설명하기 전에 아래에 있는 링크를 통해 문제를 읽고 와 주시길 바랍니다. https://www.acmicpc.net/problem/15683 문제 풀기 위해서는 내용 그대로 구현을 하면 됩니다. 구현을 할 때 신경 써야 할 부분은 CCTV가 동서남북 방향으로 회전을 할 수 있다는 점입니다. 문제에서 테스트 케이스마다 주어지는 CCTV의 개수가 다를 텐데 이를 고려해서 모든 경우의 수를 체크해야 합니다. 예를 들어 CCTV가 2개가 주어지고, 하나가 북쪽을 바라보고 있을 때 다른 하나는 동서남북을 모두 체크해야 합니다. 이어서 서쪽을 바라볼 때도 다른 하나의 동서남북을 .. Algorithm & Data Structure/문제풀이 2021. 7. 29. [Algorithm] 백준 14891번(BOJ 14891) 톱니바퀴 문제풀이 (Java) 안녕하세요 Coding-Knowjam입니다. 오늘은 백준 온라인 저지에 있는 14891번 톱니바퀴 문제를 풀어보겠습니다. 1. 문제 설명 문제 설명하기 전에 아래 링크로 가셔서 문제를 읽고 와주시길 바랍니다. https://www.acmicpc.net/problem/14891 해당 문제는 특별한 알고리즘보다는 구현을 잘하면 되는 문제입니다. 구현을 하는 방법은 여러 가지가 있겠지만 저는 1차원 배열을 이용해서 톱니바퀴의 극 정보를 저장해서 구현했습니다. 또한 회전을 하는 경우는 미리 저장한 인덱스의 위치를 변경해가면서 톱니바퀴의 회전을 구현했습니다. 저와 같은 방법으로 구현을 하실 때 주의하실 점은 인덱스의 계산과정에서 배열을 벗어날 경우에는 다시 처음 혹은 마지막 인덱스로 계산되도록 하는 것입니다. 추.. Algorithm & Data Structure/문제풀이 2021. 7. 28. 이전 1 2 3 4 5 6 다음 728x90