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 |