1330 두 수 비교하기
조건문 사용하기
if (조건문){
실행문장;
}
else if (){ ~~ }
else{ ~~ }
대충 이런 구조임.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
if(a>b){
System.out.println(">");
}
else if(a<b){
System.out.println("<");
}
else{
System.out.println("==");
}
}
}
삼항연산자를 사용할 수도 있다.
속도가 딱히 빠르지는 않다고 한다. 가독성 때문에 쓰는 경우가 가끔 있는데 난 안좋아함.
변수 = (조건문) ? (true일 때 실행) : (false일 때 실행);
중첩도 가능하다!
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
String str = (A>B) ? ">" : ((A<B) ? "<" : "==" );
System.out.println(str);
}
}
9498 시험성적
다중 if문 사용하기.
switch문을 이용하려고 했는데...값에는 수식이나 변수가 들어갈 수 없다.
switch(식)의 식과 case (값)에 있는 값끼리만 비교가 가능하다....
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
if(A>=90) System.out.println("A");
else if(A>=80) System.out.println("B");
else if (A>=70) System.out.println("C");
else if(A>=60) System.out.println("D");
else System.out.println("F");
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
switch(a){
case (a>=90):
System.out.println("A");
break;
case (a>=80):
System.out.println("B");
break;
case (a>=70):
System.out.println("C");
break;
case (a>=60):
System.out.println("D");
break;
default:
System.out.println("F");
break;
}
}
}
바보같이 이렇게 하고 틀림...ㅎ
2753 윤년
조건에 다양한 연산자 사용하기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
if (((a%4==0) && (a%100!=0)) || (a%400==0)){
System.out.println("1");
}
else{
System.out.println("0");
}
}
}
다중 if문으로 해도 되지만, 위와 같이 논리 연산자가 더 편리하다.
14681 사분면 고르기
중첩 if문 사용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
if (a>0){
if (b>0){
System.out.println(1);
}
else{
System.out.println(4);
}
}
else{
if (b>0){
System.out.println(2);
}
else{
System.out.println(3);
}
}
}
}
2884 알람 시계
알고리즘 :
시와 분을 입력 받는다.
if (시!=0)
if (분<45) -> 시-1, 60-(45-분) 출력하기
else 시, 분-45 출력하기
else
if (분<45) -> 23, 60-(45-분) 출력하기
else 시, 분-45 출력하기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int h = Integer.parseInt(str[0]);
int m = Integer.parseInt(str[1]);
if (h!=0){
if (m<45){
System.out.println((h-1) + " " + (60-(45-m)));
}
else{
System.out.println(h+" "+ (m-45));
}
}
else{
if (m<45){
System.out.println(23+" "+ (60-(45-m)));
}
else{
System.out.println(h+" "+ (m-45));
}
}
}
}
중요한건 아닌데 유의할 점
1. print문에서 , 로 연결할 수 없다.
2. print문 안에 +를 사용하면 연산할 때 괄호 안에 넣어서 연산을 먼저 해주기
2525 오븐 시계
간단할 것이라 생각했는데, 필요한 시간의 제한이 <=1000이여서 아주 약간 복잡해졌다.
알고리즘 :
시, 분, 필요시각(m)을 입력받는다.
a = 시*60 + 분 + m
시/60%24, 분%60 을 출력한다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int k = Integer.parseInt( br.readLine());
int h = Integer.parseInt(str[0]);
int m = Integer.parseInt(str[1]);
int a=h*60+m+k;
System.out.println((a/60%24)+ " "+ (a%60));
}
}
모두 한꺼번에 분으로 바꿔준 뒤 계산하고 나머지, 몫 연산자를 이용해 종료 시각을 출력하는 것이다.
시간이 24를 넘어갈 수 없으므로 24로 한번더 나머지 연산을 수행한다.
2480 주사위 세 개
알고리즘 :
if 주사위 세 개가 모두 다른 경우 : max값 찾고 계산
else:
if a==b || a==c : a값으로 계산
else : b값으로 계산
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int a = Integer.parseInt(str[0]);
int b = Integer.parseInt(str[1]);
int c = Integer.parseInt(str[2]);
if (a!=b && a!=c && b!=c){
if (a>b){
if(a>c){
System.out.println(a*100);
}
else{
System.out.println(c*100);
}
}
else{
if(b>c){
System.out.println(b*100);
}
else{
System.out.println(c*100);
}
}
}
else{
if (a==b && b==c){
System.out.println(10000 + a*1000);
}
else{
if (a==b || a==c){
System.out.println(1000 + a*100);
}
else{
System.out.println(1000 + b*100);
}
}
}
}
}
a==b || a==c 에 만족하지 않는 경우는 b==c만 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int a, b, c;
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
// 만약 모든 변수가 다른 경우
if (a != b && b != c && a != c) {
int max = Math.max(a, Math.max(b, c));
System.out.println(max * 100);
}
// 3개의 변수가 모두 같은 경우
else if (a == b && a == c) {
System.out.println(10000 + a * 1000);
}
// a가 b혹은 c랑만 같은 경우
else if(a == b || a == c) {
System.out.println(1000 + a * 100);
}
// b가 c랑 같은 경우
else {
System.out.println(1000 + b * 100);
}
}
}
max값을 if문을 이용하여 푸는 것이 좀..귀찮았는데 JAVA에서 제공하는 Math.math 메소드를 이용하여 쉽게 찾을 수 있다.
회고
아직 python이 편하다..ㅜ
JAVA열심히 하다보면 python보다 재밌어지는 날이 올까...
github에 백준 연습한 것을 올릴까 고민중이다.
'코딩테스트' 카테고리의 다른 글
[JAVA] 문자열 (0) | 2024.01.16 |
---|---|
[JAVA] 1차원 배열 (0) | 2024.01.14 |
[JAVA] 반복문 (1) | 2024.01.13 |
[JAVA] 입출력과 사칙연산 (1) | 2024.01.10 |
[BAEKJOON] 24060 : 알고리즘 수업 - 병합 정렬 1 (0) | 2023.07.28 |