설명민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다. 출력첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 예시 입력1XXXXXX 예시 출력1AAAABB 예시 입력2XX.XX 예시 출력2BB.BB 풀이로직은 단순하다.사전순으로 가장 ..
String
암호 설명 현수는 영희에게 알파벳 대문자로 구성된 비밀편지를 매일 컴퓨터를 이용해 보냅니다. 비밀편지는 현수와 영희가 서로 약속한 암호로 구성되어 있습니다. 비밀편지는 알파벳 한 문자마다 # 또는 *이 일곱 개로 구성되어 있습니다. 만약 현수가 "#*****#"으로 구성된 문자를 보냈다면 영희는 현수와 약속한 규칙대로 다음과 같이 해석합니다. 1. "#*****#"를 일곱자리의 이진수로 바꿉니다. #은 이진수의 1로, *이진수의 0으로 변환합니다. 결과는 "1000001"로 변환됩니다. 2. 바뀐 2진수를 10진수화 합니다. "1000001"을 10진수화 하면 65가 됩니다. 3. 아스키 번호가 65문자로 변환합니다. 즉 아스크번호 65는 대문자 'A'입니다. 참고로 대문자들의 아스키 번호는 'A'는 6..
문자열 압축 설명 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 입력 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 압축된 문자열을 출력한다. 예시 입력 1 KKHSSSSSSSE 예시 출력 1 K2HS7E 예시 입력2 KSTTTSEEKFKKKDJJGG 예시 출력2 KST3SE2KFK3DJ2G2 풀이 내가 푼 방법은 다음과 같다. 0. 정답으로 리턴할 문자열 변수인 answer를 선언한다. StringBuilder도 생성한다. 1. 입력받은 문자열을 문자 배열로 바꾼다. 현재 위치의 문자가 몇 번 나왔는..
가장 짧은 문자거리 설명 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요. 입력 첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다. 예시 입력 teachermode e 예시 출력 1 0 1 2 1 0 1 2 2 1 0 풀이 이 문제의 핵심은 왼쪽부터 탐색한 후, 오른쪽으로부터도 탐색해야 한다는 것이다. 문자열은 다음과 같은 상태이다. 1. 정답으로 리턴할 정수형 배열을 선언하고 문자열의 길이만큼의 크기를 할당한다. 변수 p를 아주 큰 수로 둔다. 여기서는 1000으로..
숫자만 추출 설명 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다. 추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다. 입력 첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 100을 넘지 않습니다. 출력 첫 줄에 자연수를 출력합니다. 예시 입력 g0en2T0s8eSoft 예시 출력 208 풀이 풀이 방법은 2가지이다. 다음은 첫 번째 풀이이다. char 도 결국 정수형임을 이용했다. 1. 입력받은 문자열을 문자로 바꾸어 반복문을 돈다. 2. 해당 문자가 48(즉, char '0')보다 크고, 57(즉, char..
유효한 팰린드롬 설명 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라고 합니다. 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않습니다. 알파벳 이외의 문자들의 무시합니다. 입력 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다. 출력 첫 번째 줄에 팰린드롬인지의 결과를 YES 또는 NO로 출력합니다. 예시 입력 found7, time: study; Yduts; emit, 7Dnuof 예시 출력 YES 풀이 1. String 타입의 answer 변수를 "NO"로 작성한다. 2. 알파벳만 가지고 검사를 하기 때문에 정규식을 이용해 알파벳이 아..
회문 문자열 설명 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 합니다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력하는 프로그램을 작성하세요. 단 회문을 검사할 때 대소문자를 구분하지 않습니다. 입력 첫 줄에 길이 100을 넘지 않는 공백이 없는 문자열이 주어집니다. 출력 첫 번째 줄에 회문 문자열인지의 결과를 YES 또는 NO로 출력합니다. 예시 입력 gooG 예시 출력 YES 풀이 1. answer 변수를 "NO" 로 정의한다. 2. StringBuilder를 이용해 입력받은 문자열을 뒤집고 String으로 만든다. StringBuilder 클래스의 reverse(), toString() 을 이용한다. 3. 입력받은 문자열과..
중복 문자 제거 설명 소문자로 된 한개의 문자열이 입력되면 중복된 문자를 제거하고 출력하는 프로그램을 작성하세요. 중복이 제거된 문자열의 각 문자는 원래 문자열의 순서를 유지합니다. 입력 첫 줄에 문자열이 입력됩니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 중복문자가 제거된 문자열을 출력합니다. 예시 입력 ksekkset 예시 출력 kset 풀이 문자열의 길이만큼 반복문을 돌며 다음 로직을 실행한다. 현재 위치의 문자가 발견된 위치가 현재 위치와 같다면 해당 문자를 answer 변수에 누적시킨다. String의 indexOf(Char c)는 문자열에서 c가 처음으로 발견된 위치를 리턴한다. 코드 package solve; import java.util.Scanner; public class..