Algorithm 66

[Python] 2475 - 검증수

문제 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.입력첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.출력첫째 줄에 검증수를 출력한다. 풀이그냥 for문으로 풀어도 되지만 조금 다른 방식으로 풀고 싶어 map과 lambda를 이용했다.map은 la..

[Python] 2920 - 음계

문제 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다.1부터 8까지 차례대로 연주한다면 ascending, 8부터 1까지 차례대로 연주한다면 descending, 둘 다 아니라면 mixed 이다.연주한 순서가 주어졌을 때, 이것이 ascending인지, descending인지, 아니면 mixed인지 판별하는 프로그램을 작성하시오.입력첫째 줄에 8개 숫자가 주어진다. 이 숫자는 문제 설명에서 설명한 음이며, 1부터 8까지 숫자가 한 번씩 등장한다.출력첫째 줄에 ascending, descending, mixed 중 하나를 출력한다. 풀이오름차순 정렬 값, 내림차순 정렬 값과..

[JAVA] 1924 - 2007년

문제오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.입력첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.출력첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다. 풀이 원래 같았으면 월별 날짜를 다 더해서 7로 나누는 식으로 풀었겠지만, JAVA를 배우는 입장이라 내장 모듈을 배우고 싶어 날짜와 관련된 모듈을 사용해 풀었다. 덕분에 시간과 메모리는 좀 많이 쓰는 코드이다 😂요일..

[JAVA] 2739 - 구구단

문제N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.입력첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.출력출력형식과 같게 N1부터 N9까지 출력한다. 풀이 기본적인 구구단 출력 문제이다.for문을 잘 활용하면 된다.JAVA에도 f string이 있었으면 좋겠다.. ㅎㅎ 그래도 int가 String에 바로 합쳐지는 건 좋다. 답import java.util.Scanner; public class Gugudan { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); for (int i =..

[Python] 1744 - 수 묶기

문제길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 상관없이 묶을 수 있다. 하지만, 같은 위치에 있는 수(자기 자신)를 묶는 것은 불가능하다. 그리고 어떤 수를 묶게 되면, 수열의 합을 구할 때 묶은 수는 서로 곱한 후에 더한다. 예를 들면, 어떤 수열이 {0, 1, 2, 4, 3, 5}일 때, 그냥 이 수열의 합을 구하면 0+1+2+4+3+5 = 15이다. 하지만, 2와 3을 묶고, 4와 5를 묶게 되면, 0+1+(2*3)+(4*5) = 27이 되어 최대가 된다.수열의 모든 수는 단 한번만 묶거나, 아니면 묶지 않아야한다.수열이 주어졌을 때, 수열의 각..

[JAVA] 2742 - 기찍 N

문제자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.입력첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄부터 N번째 줄 까지 차례대로 출력한다. 풀이 N 찍기의 반대 문제이다.for문만 반대로 쓰면 된다. 답import java.util.Scanner; public class Ntnirp { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); for (int i = N; i >= 1; i--){ System.out.println(i); } } }서버에 제출할 경우, 클래스 명을 "Main"으로 바꿔야..

[JAVA] 2741 - N 찍기

문제자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.입력첫째 줄에 100,000보다 작거나 같은 자연수 N이 주어진다.출력첫째 줄부터 N번째 줄 까지 차례대로 출력한다. 풀이 Scanner.nextInt를 통해 입력for문을 이용해 반복해 출력 답import java.util.Scanner; public class PrintN { public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); for (int i = 1; i

[JAVA] 11720 - 숫자의 합

문제N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.입력첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.출력입력으로 주어진 숫자 N개의 합을 출력한다. 풀이 문자열로 입력을 받고 한글자씩 잘라서 숫자로 바꿔 더한다.문자열로 받기 = scanner.nextInt한글자씩 자르기 = substring(i,i+1)숫자로 바꾸기 = Integer.parseInt 다른 풀이한글자씩 잘라서 숫자로 변환하는 과정을 charAt함수를 통해 해결할 수 있다. charAt(i) - '0' 👍답import java.util.Scanner; public class SumOfNumber { public static void main..

[Python] 11399 - ATM

문제인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다...

[JAVA] 11719 - 그대로 출력하기 2

문제입력 받은 대로 출력하는 프로그램을 작성하시오.입력입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수도 있다.출력입력받은 그대로 출력한다. 풀이 그대로 출력하기 문제와 두가지가 다르다.빈 줄이 주어질 수 있다.앞 뒤에 공백이 있을 수 있다..하지만 한 줄을 그대로 받아서 출력하는 방식으로 풀면 이전 문제와 같은 코드로 통과가 가능하다. 답import java.util.Scanner; public class RawPrint2 { public static void main(String[] args){ Scanner scanner = new Sca..