목록알고리즘 (192)
곽로그
1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = www.acmicpc.net 접근 문제에서 하라는 대로 하나씩 해나가면 된다. import java.util.Scanner; public class Main { public static void main(String[] arg..
4344번: 평균은 넘겠지 문제 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자 www.acmicpc.net 접근 문제를 따라서 구현하면 쉽게 할 수 있다 주의점 출력을 잘하자. %안붙여서 2번이나 틀렸다. import java.util.Scanner; public class Main { public st..
1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. www.acmicpc.net 접근 우선 시험점수 중에서 최댓값을 알아야한다. 그러러면 배열을 선언하여 배열에 점수들을 입력받고, 배열을 순회하면서 최댓값을 찾으면 된다. 최댓값을 찾았으면 다시 배열을 순회하면서 변환된 점수를 입력한다. 그다음 변환된 점수로 평균을 구한다. 주의점 예를들어 점수입력을 40 80 60이라고 하자. 그러면 최댓값이 80이므로 40의 변환된 점수는 (40/80)*100 즉 50이 되어야 한다. 근데 만약 점수입력을 int로 받고 변환된 점수의 합도 ..
10871번: X보다 작은 수 첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. www.acmicpc.net 접근법1 수열, 즉 수의 배열이니 배열을 선언하고 배열에 수열을 입력받는다. 그런 다음 그 배열을 순회하면서 X보다 작은 수를 배열에 저장하고 순회가 끝나면 X보다 작은 수를 출력한다. import java.util.Scanner; public class Main { public static void main(String[] args) { //정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그..
10817번: 세 수 첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100) www.acmicpc.net 접근법 1 이 문제를 쉽게 접근 할 수 있는 방법 중 하나는 정렬을 이용하는 것이다. 입력받은 숫자를 배열에 저장하여 정렬한 다음 인덱스 1에 있는 숫자를 출력하면 된다. 이 방법은 쉽게 할 수 있으므로 패스 접근법 2 정렬을 모른다고 가정할 때, 접근할 수 있는 방법은 모든 경우의 수를 따지는 것이다. 즉 A,B,C가 가질 수 있는 관계의 모든 경우의 수를 구하면 된다. 3가지 수 밖에 안되기 때문에 세어볼 만 하다. 1,2,3으로 예를 들어 보자. ABC의 관계로는 1) 모두 다른 수 2) 두개가 같은 수 3) 3개가 같은 수가 있을 수 있다. 따라서 ..
11721번: 열 개씩 끊어 출력하기 첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다. www.acmicpc.net 첫번째 접근(잘못된 접근법) 10개씩 끊어서 출력한다고 해서 배열을 생각했다. String으로 입력받은다음 for문을 이용해 index가 9로 나누어 떨어지면 개행을 해라라는 로직이다. 1)words변수에 String을 입력받는다 2) for문 i=0, i
11720번: 숫자의 합 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. www.acmicpc.net 문제의 조건을 생각하지 않고 바로 문제를 풀었을 때의 접근법은 아래와 같다. 0) 연속된 숫자의 개수(N)과 연속된 숫자(numS)를 입력받는다. 1) numS를 입력받는다 2) numS를 10으로 나눈 나머지를 sum에 더한다 3) numS를 10으로 나눈다 4) N만큼 반복한다 위의 접근법에 따른 풀이는 아래 코드와 같다. import java.util.Scanner; public class Main { public static void main(String[] args) { //n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하..
8393번: 합 문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 1부터 n까지 합을 출력한다. 예제 입력 1 복사 3 예제 출력 1 복사 6... www.acmicpc.net import java.util.Scanner; public class Main { public static void main(String[] args) { //n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. Scanner in=new Scanner(System.in); int n=in.nextInt(); int sum=0; for(int i=1;i