본문 바로가기
학교/컴프1

컴프 1 실습 코드 정리(W6)

by 발빠진 쥐 2024. 4. 14.

MultipleThree

1부터 사용자에게서 입력 받은 정수n (n>0) 까지의 정수 중에서 3의 배수 합을 계산하여 출력하는 프로그램

package week6;
import java.util.Scanner;

public class MultipleThree {

	public static void main(String[] args) { 
		
		Scanner sc = new Scanner(System.in); //스캐너 생성
		
		int a = sc.nextInt(); //사용자에게 입력받은 값을 Int값으로 변환
		int z = 0; //z 초기값 설정
		
		for (int i=0; i<=a; i++ ) { //i가 0부터 a보다 작거나 같아질 때 까지 1씩 증가하면서 a+1번 반복
			if (i%3 == 0 ) { //만약 i가 3의 배수면
				z += i; //z에 i를 더하는 것을 반복 (3의 약수를 더함)
				
			}
			
		}
		
		System.out.println(z); //z출력
		
		
		
		
		
		
	}

}

 

Binary

입력받은 3자리 수의 정수를 2진수로 변환하여 출력하기

package week6;

import java.util.Scanner;

public class Binary {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in); //스캐너 생성
		int a = sc.nextInt(); //사용자가 입력한 값을 Int 타입의 데이터로 반환
		int r = 0; // r=0 초기값 설정
		int n = 1; // w=1 초기값 설정, 2진수로 변환된 수의 자리를 결정하는 변수
		if (a <= 99 || a > 999) { // a가 3자리수가 아닐때 out of range 출력
			System.out.print("out of range");
		} else {
			for (int i = 0; a > 0; i++) { // i가 0부터 a보다 작을 때까지 1씩 증가하며 a번 반복
				for (int k = 0; k < i; k++) { // 나머지 값에 자리수 부여
					n = n * 10; //루프의 반복에 따라 10의 거듭제곱이 저장됨
				}
				
				int m = a%2; //입력받은 값의 나머지를 m에 저장
				
				r = r + m * n ; // 입력받은 m에 자리 수를 부여 하고 r에 더해 대입하는 것을 반복
				n = 1; // n을 1로 초기화
				a = a / 2; //십진수를 이진수로 바꿀 때 2로 나누는 과정
			}

			System.out.println(r); //이진수 출력
		}
	}
}

 

package 혼자연습;

import java.util.Scanner;

public class Binary_3 {
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);

		int a = sc.nextInt();
		int b = 0;
		String r = ""; //초기값 설정

		if (a < 100 || a > 999) { //범위 잘 생각하기. a<99면 99가 포함이 안돼서 오류 남
			System.out.println("out of range");
		}

		else {
			for (int i = 0; a > 0; i++) {
				
				b=a%2;
				
				r=b+r; //문자열과 정수를 더하면 그냥 문자열이 됨!! 이걸 몰라서 많이 헤맸다..
				
				a=a/2; //이진법 구할때 계속 2로 나눠주는 방법을 생각하면 됨
				
				
				
			}
			
			System.out.print(r);
		}

	}

}

 

String + Int = String 값

이걸 몰라서 오래 헤맸음

a=a/2를 까먹어서는 안된다...

부등호 범위도 신경쓰기 a<99 XXXX a<100 

 

 

 

PrimeNumber

package week6;

import java.util.Scanner;

public class PrimeNumber {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in); //스캐너 생성

		int a = sc.nextInt(); //사용자가 입력한 값을 Int 타입의 데이터로 반환
		
		int P = 0; //소수의 개수
		
		int b = 0; //b 초기 값 설정

		if (a < 1) {
			System.out.println("out of range"); //a가 1보다 작을 때 out of range 출력
		}

		else {
			for (int i = 2; i <= a; i++) { //1은 소수
				

				for (int k = 1; k <= i; k++) { //k가 1부터 i보다 작거나 같아질 때 까지 1씩 증가하며 반복 
					if (i % k == 0) {// i/k의 나머지가 0이면 k는 i의 약수가 됨. 
						b++; // b= 약수의 개수
					}
				}
				if (b == 2) {
                    P++; //약수가 두개인 조건에 걸릴 때마다 1씩 증가함, 소수의 개수
                }
				
				b = 0; //b의 값 0으로 초기화
			}
			
			System.out.println(P); //소수의 개수 출력

		}

		

	}

}

 

Game369랑 비슷한듯

for문 + if 문 + 변수++ 를 사용해서 횟수를 세는 방법 ( i / k )

Game369랑 차이점은 case 문인지 if 문을 썼는지 차이 같은데 Game369에서는 박수0 1 2 번으로 경우가 나뉘지만 

이건 약수가 2개인 조건만 만족하면 돼서 if문을 씀....

큰 포문 안에 b=0; 으로 초기화 해주는 거 까먹지 말기