JAVAIARY

반복문, 배열 본문

examplePractice

반복문, 배열

shiherlis 2022. 10. 2. 22:36

// 코드를 만들 때 보기 편하라고 안내문구를 적었지만 제출시에는 주석처리하고 제출해야함!!

문제번호1110더하기사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자.
26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다.
위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다.
N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오.

AplusB1110

import java.util.Scanner;

public class Main {
    static int M;
	static int N;

	public static int calM (int num) {
		M = num / 10;
		return M;
	}
	public static int calN (int num) {
		N = num % 10;
		return N;
	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("숫자를 입력하세요.");
		
		int num = scan.nextInt();
		int result = 0;
		int count =0;
		int num1 = num;
		while (result != num) {
			Main.calM(num1); // 2 6 8
			Main.calN(num1); // 6 8 4
			result = N * 10 + Main.calN(M + N); // 68 84 42
			count++;
			num1 = result;
		}
		System.out.println(count);
		scan.close();
	}

}

 

문제번호4344평균은넘겠지

 

문제

대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.

입력

첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.

출력

각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
import java.util.Scanner;

public class BiggerThanAvg4344 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int C = scan.nextInt();
		int n = 0; //배열의 길이
		
		for (int i = 0; i < C; i++) {
			double ttl = 0; //케이스별 점수들의 합
			int count = 0; //비율 계산해 줄 count
			n = scan.nextInt();
			int[] arr = new int[n];
			for (int j = 0; j < arr.length; j++) {
				arr[j] = scan.nextInt();
				ttl += arr[j];
			}
			for(int score : arr) {
				if (score > (double)ttl/n) {
					count++;
				}
			}
			System.out.println(String.format("%,.3f", (double)count/(double)n*100) + "%");
		}
		scan.close();
	}
}

 

애먹었던 부분 

ttl += arr[j];
if (score > (double)ttl/n) 		 //1

avg += (double)arr[j]/n; 
if (score > avg)			//2

1번과 같이 모든 합을 받아서  n으로 나눈 것과 비교하지 않고

2번처럼 미리 나눈 것을 합쳤을 경우 반례가 생김

 

1 5 11111		//반례

2번으로 작성해서 위 반례를 입력하면 avg가 1이 나와야 할 것 같지만 아니다.

문제번호8958OX퀴즈

import java.util.Scanner;

public class OXQuiz8958 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("퀴즈 갯수 입력");
		int n = scan.nextInt();
		String[] arr = new String[(n+1)];
		
		int count = 0;
		int subtotal=0;
		System.out.println("퀴즈입력");
		
		scan.nextLine();
		for (int i = 0; i < n ; i++) {
			arr[i] = scan.nextLine();
			for (int j = 0; j < arr[i].length(); j++) {
				if (arr[i].charAt(j) == 'O') {
					count ++;
					subtotal += count;
				}
				else
					count = 0;
			}
			System.out.println(subtotal);
			subtotal =0;
			count=0;
		}
		scan.close();
	}
}
배열.charAt(n)

- 배열의 n번째 인덱스를 문자열로 변환해주는 메서드 !

애먹었던 부분

nextLine();

사용시 주의점이 있었다. 

https://itbeginner2020.tistory.com/23

nextint() 를 사용하면서 입력된 엔터가 남아있어 nextline() 이 그 엔터를 그대로 받아 사용자가 입력하기도 전에 넘어가버리는 문제

nextline()을 앞에 한 번 더 작성해 주는 방법으로 해결했다.

 

문제번호3052나머지

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
import java.util.Scanner;

public class Remainder3052 {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int[] list = new int[10];
		for (int i = 0; i < 10; i++) {
			list[i] = scan.nextInt() % 42;
		}
		
		int count = 0;
		for (int i = 0; i < list.length; i++) {
			for (int j = i+1; j < list.length; j++) {
				if (list[i] == list[j]) {
					count++;
					break;
				}
			}
		}

		scan.close();
		System.out.println(10-count);
	}
}

 

'examplePractice' 카테고리의 다른 글

프로그래머스) lv.2 올바른 괄호  (0) 2023.01.23
함수  (0) 2022.12.15
반복문, 배열  (0) 2022.10.02
조건문, 반복문, 삼항연산자, 배열, 2개리턴  (0) 2022.09.10
반복문 연습 1  (0) 2022.08.21