본문 바로가기
study

study - day01

by hj_it 2024. 3. 12.

24/03/11

변수

- 변수 선언 시 메모리에 할당된 것은 아니고, 값을 대입할 때 메모리에 할당된다.

 

정수타입

- 진수별로 리터럴을 붙인다. (붙이는 이유는 구분 때문)

 

문자타입

- char를 초기화할 경우 ''과 같이 초기화 시 에러발생. ' '처럼 공백을 넣어줘야 에러가 발생하지 않는다.

 

실수타입

- float보다 double이 더 정밀하고 더 큰 수를 저장할 수 있다.

 

논리타입

- 논리 리터럴은 true와 false이다. 두 가지 상태값을 저장할 필요가 있을 경우 사용된다.

 

문자열타입

- 문자타입은 유니코드로 변환되지만, 문자열 타입은 변환되지 않는다.""" 사용 시 작성 그대로 저장되어 출력할 수 있다.

 

자동타입변환

- 작은 변수 타입이 큰 변수 타입으로 대입될 경우 자동으로 타입이 변환되는 것을 말한다.

 

강제타입변환

- 큰 변수 타입을 작은 변수 타입으로 강제로 변환시키는 것이다. '작은변수타입 = (작은변수타입) 큰변수타입' 형식으로 작성한다.

int → byte, long → int, int → char, 실수 → 정수

 

변수 사용 범위

- if, for, while 등 중괄호 블록 내에서 선언된 변수는 해당 블록에서만 사용이 가능하다.

 

코딩 테스트

- SWEA 1단계 java 문제 풀기

 

▶ 홀수만 더하기[SWEA  2072]

import java.util.Scanner;
import java.io.FileInputStream;
// 10개의 수를 입력 받아 그 중에서 홀수만 더한 값을 출력하는 프로그램.
class Solution
{
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();
        
		for(int test_case = 1; test_case <= T; test_case++) {
			int sum = 0;                  // 더한 값을 저장할 변수
			for (int i = 0; i < 10; i++){     // 10번 반복
				int num = sc.nextInt();   
				// 입력 받은 수가 홀수인지 판별 후 홀수일 경우 sum에 추가
				if(num % 2 == 1) sum += num;
			}
			System.out.println("#" + test_case + " " + sum);
		}
	}
}

 

평균값 구하기 [SWEA  2071]

import java.util.Scanner;
import java.io.FileInputStream;
// 10개의 수를 입력 받아 평균값을 출력하는 프로그램(단, 소수점 첫째 자리에서 반올림한 정수)
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();

		for(int test_case = 1; test_case <= T; test_case++) {
			double sum = 0;                // 입력받은 값의 합을 저장할 변수
			for(int i = 0; i < 10; i++) {  // 10번 반복
				double num = sc.nextInt();
				sum += num;                // 입력받은 수를 sum에 추가
			}
			double avg = sum / 10;          // 총합을 10으로 나눈 값을 avg에 저장
			System.out.println("#" + test_case + " " + Math.round(avg)); // Math.round 메서드를 이용해 반올림
		}
	}
}

Math.round 메소드의 경우 실수 값을 첫 번째 자리에서 반올림하여 정수 값을 리턴한다. 

예를 들어, 2번째 자리에서 반올림 할 경우에는 Math.round((실수*100)/100.0); 과 같은 형식으로 구현해야 된다.

 

이외에도 java에서 반올림 메소드로 String.format() 이 있다. String.format("%.nf", 실수)의 경우 소수점 n번째 자리까지 출력된다. 또, 이 메소드의 경우에는 자동으로 세 자리마다 콤마(,)를 붙여준다.

 

큰 놈, 작은 놈, 같은 놈 [SWEA  2070]

import java.util.Scanner;
import java.io.FileInputStream;
// 2개의 수를 입력 받아 크기를 비교하여 등호 또는 부등호를 출력하는 프로그램
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();

		for(int test_case = 1; test_case <= T; test_case++) {
			int num1 = sc.nextInt();  // 첫 번째 수
			int num2 = sc.nextInt();  // 두 번째 수
            
			if (num1 > num2) {            // num1이 num2보다 큰 경우
				System.out.println("#"+test_case+" >");
			} else if (num1 == num2) {    // num1이 num2와 같은 경우
				System.out.println("#"+test_case+" =");
			} else {                      // num1이 num2보다 작은 경우
				System.out.println("#"+test_case+" <");
			}
		}
	}
}

 

최대수 구하기 [SWEA  2068]

import java.util.Scanner;
import java.io.FileInputStream;
// 10개의 수를 입력 받아 그 중에서 가장 큰 수를 출력하는 프로그램
class Solution {
	public static void main(String args[]) throws Exception {

		Scanner sc = new Scanner(System.in);
		int T;
		T=sc.nextInt();

		for(int test_case = 1; test_case <= T; test_case++) {
			int max = 0;   // 최대값을 저장할 변수
			for(int i = 0; i < 10; i++) {  // 10번 반복
				int num = sc.nextInt();
				if (max < num) {       // max의 값보다 입력받은 값이 큰 경우
					max = num;     // max값에 num값을 대입
				}
			}
			System.out.println("#" + test_case + " " + max);
		}
	}
}

 

중간값 찾기 [SWEA  2063]

import java.util.Scanner;
import java.io.FileInputStream;
import java.util.Arrays;
// 입력으로 N개의 점수가 주어졌을 때, 중간값을 출력
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int[] num = new int[N];  // N개의 점수를 입력할 배열
        
		for (int i = 0; i < N; i++) {  // N번 반복
			num[i] = sc.nextInt();
		}
		Arrays.sort(num);    // num 배열을 오름차순으로 정렬
		System.out.println(num[N/2]); // num 배열의 중간에 위치한 값 출력
	}
}

Arrays.sort() 메소드는 기본값으로 오름차순으로 정렬된다. 내림차순으로 정렬하기 위해서는 Collections.reverseOrder()를 인자에 추가해주면 내림차순으로 정렬할 수 있다.

 

자릿수 더하기 [SWEA  2058]

import java.util.Scanner;
import java.io.FileInputStream;
// 하나의 자연수를 입력 받아 각 자릿수의 합을 계산하는 프로그램
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
        
		int a = num / 1000;           // 천의 자릿수 추출
		int b = (num % 1000) / 100;   // 백의 자릿수 추출
		int c = (num % 100) / 10;     // 십의 자릿수 추출
		int d = num % 10;             // 일의 자릿수 추출
        
		int sum = a + b + c + d;      // 각 자릿수의 합
        
		System.out.print(sum);
	}
}

가장 앞의 자릿수 외에 다음 자릿수부터는 앞 자릿수의 나머지 값을 나눈 값을 가져와야 한다.

 

신문 헤드라인 [SWEA  2047]

import java.util.Scanner;
import java.io.FileInputStream;
// 입력으로 주어진 문장에 모든 소문자 알파벳을 찾아 대문자로 변환한 다음, 그 결과를 출력하는 프로그램
class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
		String head = sc.nextLine();
        
		System.out.print(head.toUpperCase());   // toUpperCase() 메소드를 이용
	}
}

toUpperCase() 메소드는 대상 문자열을 모두 대문자로 변환한다. 반대로 toLowerCase() 메소드는 소문자로 변환한다.

'study' 카테고리의 다른 글

study - day10  (0) 2024.04.01
study - day09  (0) 2024.04.01
study - day08  (0) 2024.04.01
study - day07  (1) 2024.03.25
study - day02  (0) 2024.03.13