코딩테스트/백준

    1259 / 팰린드롬수

    1259 / 팰린드롬수

    문제 내용 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬 수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬 수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자. 입출력 1. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다...

    1236 / 성지키기

    1236 / 성지키기

    문제 내용 영식이는 직사각형 모양의 성을 가지고 있다. 성의 1층은 몇 명의 경비원에 의해서 보호되고 있다. 영식이는 모든 행과 모든 열에 한 명 이상의 경비원이 있으면 좋겠다고 생각했다. 성의 크기와 경비원이 어디 있는지 주어졌을 때, 몇 명의 경비원을 최소로 추가해야 영식이를 만족시키는지 구하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 성의 세로 크기 N과 가로 크기 M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 성의 상태가 주어진다. 성의 상태는. 은 빈칸, X는 경비원이 있는 칸이다. 2. 출력 첫째 줄에 추가해야 하는 경비원의 최솟값을 출력한다. 예제 -입력- 4 4 .... .... .... .... -출력- 4 -입력- 3 5 XX... ...

    1193 / 분수찾기

    1193 / 분수찾기

    문제 내용 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 2. 출력 첫째 줄에 분수를 출력한다. 예제 입력 출력 1 1/1 2 1/2 3 2/1 4 3/1 5 2/2 6 1/3 7 1/4 8 2/3 9 3/2..

    1157번 / 단어공부

    1157번 / 단어공부

    문제 내용 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입출력 1. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 2. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는?를 출력한다. 예제 입력 출력 Mississipi ? zZa Z z Z baaa A 풀이 문자를 ASCII로 변경한 뒤 뺄셈 해주면 해결되는 문제다 import java.util.Scanner; public class Main { public static void mai..

    1145번 / 적어도 대부분의 배수

    1145번 / 적어도 대부분의 배수

    문제 내용 다섯 개의 자연수가 있다. 이 수의 적어도 대부분의 배수는 위의 수 중 적어도 세 개로 나누어지는 가장 작은 자연수이다. 서로 다른 다섯 개의 자연수가 주어질 때, 적어도 대부분의 배수를 출력하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 다섯 개의 자연수가 주어진다. 100보다 작거나 같은 자연수이고, 서로 다른 수이다. 2. 출력 첫째 줄에 적어도 대부분의 배수를 출력한다. 예제 입력 출력 30 42 70 35 90 210 1 2 3 4 5 4 30 45 23 26 56 1170 3 14 15 92 65 195 풀이 처음 문제를 봤을 때 최소공배수를 이용하는 문제라는 것을 바로 알게 됐다. 문제 해결 방식으로 공약수로 세 수를 동시에 나눠서, 공약수와 나눈 서로소를 곱하는 것을 채..

    1032번 / 명령프롬포트

    1032번 / 명령프롬포트

    문제 내용 시작 -> 실행 -> cmd를 쳐보자. 검정 화면이 눈에 보인다. 여기서 dir이라고 치면 그 디렉터리에 있는 서브 디렉터리와 파일이 모두 나온다. 이때 원하는 파일을 찾으려면 다음과 같이 하면 된다. dir *. exe라고 치면 확장자가 exe인 파일이 다 나온다. "dir 패턴"과 같이 치면 그 패턴에 맞는 파일만 검색 결과로 나온다. 예를 들어, dir a?b.exe라고 검색하면 파일명의 첫 번째 글자가 a이고, 세 번째 글자가 b이고, 확장자가 exe인 것이 모두 나온다. 이때 두 번째 문자는 아무거나 나와도 된다. 예를 들어, acb.exe, aab.exe, apb.exe가 나온다. 이 문제는 검색 결과가 먼저 주어졌을 때, 패턴으로 뭘 쳐야 그 결과가 나오는지를 출력하는 문제이다. ..

    2475번 / 검증수

    2475번 / 검증수

    문제 내용 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다. 예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81을 10으로 나눈 나머지인 1이 검증수이다. 입출력 1. 입력 첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다. 2. 출력 첫째 줄에 검증수를 출력한다. 풀이 배열로 5번 루프를 해서 받거나 여러 방법을 생각할 수 있지만, 젤 간단하게..

    2338번 / 긴자리계산

    2338번 / 긴자리계산

    문제 내용 두 수 A, B를 입력받아, A+B, A-B, A×B를 구하는 프로그램을 작성하시오. 입출력 1. 입력 첫째 줄에 A가, 둘째 줄에 B가 주어진다. 각각의 수는 10진수로 1,000자리를 넘지 않으며 양수와 음수가 모두 주어질 수 있다. 2. 출력 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미). 풀이 1271번 엄청난 부자와 같은 문제다. BigInteger를 활용하는 문제다. 각각의 수는 10진수로 1000자리를 넘지 않으며 따라서 풀면 import java.math.BigInteger; import java.util.Scanner; public cl..