백준 15

[백준/BOJ] 16933번 벽 부수고 이동하기 3 (자바/Java)

1. 문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 이동하지 않고 같은 칸에 머물러있는 경우도 가능하다. 이 경우도 방문한 칸의 개수가 하나 늘어나는 것으로 생각해야 한다. 이번 문제에서는 낮과 밤이 번갈아가면서 등장한다. 가장 처음에 이동할 때는 낮이고, 한 번 이동할 때마다 낮과 밤이 바뀌게 된다. 이동하지 않고 같은 칸에 머무르는 경우에도 낮과 밤이 바뀌게 된다. 만약에 이동하는 도중에 벽을 부수고 이..

BOJ/BFS DFS 2023.08.24

[백준/BOJ] 15664번 N과 M (10) (자바/Java)

https://www.acmicpc.net/problem/15664 15664번: N과 M (10) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 1. 문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수 중에서 M개를 고른 수열 고른 수열은 비내림차순이어야 한다. 길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다. 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 ..

BOJ/BackTracking 2023.08.17

[백준/BOJ] 1600번 말이 되고픈 원숭이 (자바/Java)

https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 1. 문제 동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 말(Horse)이 되기를 간절히 원했다. 그래서 그는 말의 움직임을 유심히 살펴보고 그대로 따라 하기로 하였다. 말은 말이다. 말은 격자판에서 체스의 나이트와 같은 이동방식을 가진다. 다음 그림에 말의 이동방법이 나타나있다. x표시한 곳으로 말이 갈 수 있다는 뜻이다. 참고로 말은 장애물을 뛰어넘을..

BOJ/BFS DFS 2023.08.12

[백준/BOJ] 2206번 벽 부수고 이동하기 (자바/Java)

https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 1. 문제 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로로 이동하려 한다. 최단경로는 맵에서 가장 적은 개수의 칸을 지나는 경로를 말하는데, 이때 시작하는 칸과 끝나는 칸도 포함해서 센다. 만약에 이동하는 도중..

BOJ/BFS DFS 2023.08.06

[2주차] 목표 달성 백준 장학금 with 제로베이스

목표 달성 백준 장학금 with 제로베이스에 대한 2주차 보고서를 작성합니다. 1. 2주차 경과 일주일동안 5문제를 푸는 코딩테스트 미션은 생각보다 괜찮았던 것 같습니다. 다양한 알고리즘을 익히기 위해서, 이번 주는 BFS와 DFS 위주로 문제풀이를 진행했습니다. 알고리즘을 풀면서 느낀 거는 이 문제가 어떤 알고리즘인지를 파악하면 나름 공식대로 풀 수 있다는 것 같았습니다. 마치 수학문제처럼 말이죠. 처음에는 정말 거들떠도 못보는 골드 티어의 문제를 접하여 풀 수 있게 되었고, 어느정도 BFS에는 기본기가 숙달되었다는 것을 느꼈습니다. 또한 BFS와 DFS 중에서 BFS의 예제가 많았던 것 같다고 느꼈고, 저 또한 많은 문제들을 BFS로 풀게 되면서 BFS가 많이 쓰인다는 것도 깨달았습니다. 사실 초반에..

기타 2023.08.04

모각코 4차(230729)

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이..

모각코 2023.07.30

[백준/BOJ] 5430번 AC (자바/Java)

https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 1. 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이..

BOJ 2023.07.30

[1주차] 목표 달성 백준 장학금 with 제로베이스

지인의 추천으로, 목표 달성 백준 장학금을 신청하게 되었다. 단순히 목표만 달성하면 장학금을 준다는데.. 대박..!!! 총 장학금 5,000,000원을 선정된 사람 중에서 목표를 완료한 사람들끼리 N분의 1을 해서 나눠주는 방식이었다. (7월 11일 기준 인당 83만원이다.) 근데, 이게 SNS를 통해 장학금 제도를 홍보하거나, 추천인을 받으면 확률이 올라간다는데.. 난 하나도 안했는데 왜 된거지...? 1. 백준 장학금을 신청하게 된 이유 나는 보통 공부를 하고자 할 떄, 글로만 이루어진 책들 보다는 인터넷 강의를 이용해 학습하는 것이 더 효과가 뛰어나다.(고질적인 현대인들의 문제..) 그래서, 저번에도 들었지만 처음부터 다시 김영한 님의 스프링 강의를 커리큘럼대로 따라가고 있다. 현재는 입문을 수강 ..

기타 2023.07.29

[Java/자바] 문자열을 "+"로 split 해보자(BOJ 1541 잃어버린 괄호)

백준 1541 문제를 풀던 도중, 제가 생각해낸 해법에 대해서 문자열을 +로 split해야하는 상황이 발생했습니다. 여느 때와 같이 string뒤에 참조로 split 함수를 호출하여 구분자를 +로 지정하지 아래와 같은 에러가 나타났습니다. 여기서 쓰이는 +는 뒤에 어떤 것이 더 오기를 기대하기 때문에, +라는 quantifier가 기다리는 행동을 한다는 것을 알려주고 있습니다. 사실 +는 정규식을 사용할 때 종종 찾아볼 수 있습니다. 정규식으로 사용될 때 +는 뒤에 어떤 문자가 적어도 1번 이상 진행되는 것을 의미하는 것입니다. 따라서 우리가 사용하려는 + 문자 자체를 split하기 위해서는 위와 같이 진행할 수 없습니다. 따라서 + 대신 \\+로 수정하여 적용해주면 올바르게 나타낼 수 있습니다. 실제로..

Java 2023.07.26

모각코 3차(230721)

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net 1. 문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 ..

모각코 2023.07.22