문제 https://www.acmicpc.net/problem/1600 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 골드4 BFS 문제이다. 문제를 이해하고, 접근하는 것 자체는 쉬웠는데 메모리초과, 시간초과 때문에 좀 힘들었던 문제이다. 풀이 첫번째로 말처럼, 원숭이처럼 이동할 수 있는 방향 배열을 만들어주었다. 그리고 tuple을 통해 x, y좌표와 현재 말처럼 이동할 수 있는 횟수(능력)을 Queue에 담아주었다. 이후 (0,0,0)부터 BFS를 돌면된다. 하지만 어떻게 BFS를 돌릴..
개요 이번 글에서는 자바의 String 클래스가 무엇인지, String 클래스의 특징, 주요 메서드에 대해 이야기해보려고 한다. String이란? 문자열 -> 문자의 배열/문자가 여러개 나열되어 있는 것이다. 예를들어 "ABC", "123", "Hello World"와 같이 문자의 배열로 나타나는 형태를 말한다.참고로 "ABC" 같은 경우는 'A', 'B', 'C'라는 원소를 가지는 배열이라고 할 수 있다. String 클래스의 특징 1. 문자 배열 + 메서드(기능) -> 문자 배열에 기능을 추가해놓은 것이다. 2. 내용을 변경할 수 없다(Read Only) -> 예를들어 String a = "He", String b = "llo"와 같은 두 문자열이 존재할때 a = a + b를 수행하면 a는 Hello..
문제 https://www.acmicpc.net/problem/2529 2529번: 부등호 여러분은 제시된 부등호 관계를 만족하는 k+1 자리의 최대, 최소 정수를 첫째 줄과 둘째 줄에 각각 출력해야 한다. 단 아래 예(1)과 같이 첫 자리가 0인 경우도 정수에 포함되어야 한다. 모든 입력 www.acmicpc.net 백트래킹을 통해 순열을 구하는 문제이다. 연산자 끼워넣기 문제를 풀어봤다면 쉽게 풀 수 있었을 것이다. 필자는 문자열 -> 숫자로 변환하여 대소관계를 비교하려 하였는데 이 부분에서 시간을 많이 잡아먹었다. 그렇게 레퍼런스를 찾아보던 중 문자열끼리 대소관계가 비교가 된다라는 것을 듣고 바로 해결할 수 있었다. 풀이 연산자는 연산자 배열을 따로 만들어주어 관리해주었고, 순열을 돌리며 check..
문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 삼성 코딩테스트 기출문제라고 한다. 백트래킹 문제인데 역시 삼성 문제답게 구현하기가 힘들었다. 다른 사람들 풀이를 안보고 풀려고 노력했더니 코드도 더러워지고 푸는데 2시간이나 걸렸다. 코드가 더러운만큼 다른 사람들의 풀이도 참고해보고 리팩토링할 생각이다. 풀이 첫번째로 4개의 연산자에 대해 입력을 받고 그 연산자들 전부를 (수열의 크기 ..