코드업 기초 100제 (6)

업데이트:


[1035] 16진 정수 1개 입력받아 8진수로 출력하기

[입력] f
[출력] 17

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt(16);
		System.out.printf("%o", num);
	}
}


[1036] 영문자 1개 입력받아 10진수로 출력하기

[입력] A
[출력] 65

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char spelling = sc.next().charAt(0);
		int ascii = (int)spelling;
		System.out.printf("%d", ascii);
	}
}


[1037] 정수 입력받아 아스키 문자로 출력하기

[입력] 65
[출력] A

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		char ascii = (char)num;
		System.out.printf("%c", ascii);
	}
}


[1038] 정수 2개 입력받아 합 출력하기1

[입력] 123 -123
[출력] 0

//틀린 코드
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		long result = (int)num1 + (int)num2;
		System.out.println(result);
	}
}

20200927_01 처음에 아 쉽네ㅋ 하면서 작성했던 코드가 6번째 테스트 케이스 결과와 달라서 틀렸다. 이게뭐야;; 하면서 뭐가 잘못됐는지 확인하기 위해 num1 값에 일단 제대로 값이 들어가나 테스트해봤는데 잘 들어감.

long result = (int)num1 + (int)num2;
System.out.println(num1); //num1 값 확인
System.out.println(result);

그래서 코드를 다시 봤는데 이런,, int형을 int형으로 바꿨으니 제대로 될리가,,,^^ Long형으로 제대로 형변환을 해주니 통과!!

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		long result = (long)num1 + (long)num2; //int → long으로 변경
		System.out.println(result);
	}
}


[1039] 정수 2개 입력받아 합 출력하기2

[입력] 2147483648 2147483648
[출력] 4294967296

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long num1 = sc.nextLong();
		long num2 = sc.nextLong();
		long result = num1 + num2;
		System.out.println(result);
	}
}


[1040] 정수 1개 입력받아 부호 바꿔 출력하기

[입력] -1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		System.out.println(~num + 1);
	}
}

정답이긴 한데 C/C++ 모범 소스를 보니 num 앞에 -를 붙여서 출력하길래 혹시나 하고 ‘-‘를 붙여서 출력해봤더니 굳이 +1을 하지 않아도 정답이다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		System.out.println(-num);
	}
}

단항 연산자인 ‘-‘를 변수 앞에 붙여주면 부호가 반대로 바뀌어서 계산된다. 이 설명은 코드업 1040문제 ‘문제 설명’에 나와있다. Codeup 1040

[1041] 문자 1개 입력받아 다음 문자 출력하기

[입력] a
[출력] b

import java.util.Scanner;

public class  Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char spelling = sc.next().charAt(0);
		System.out.printf("%c", spelling + 1);
	}
}


[1042] 정수 2개 입력받아 나눈 몫 출력하기

[입력] 1 3
[출력] 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1/num2);
	}
}


[1043] 정수 2개 입력받아 나눈 나머지 출력하기

[입력] 10 3
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1%num2);
	}
}


[1044] 정수 1개 입력받아 1 더해 출력하기

[입력] 2147483647
[출력] 2147483648

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long num = sc.nextInt();
		System.out.printf("%d", ++num);
	}
}


[1045] 정수 2개 입력받아 자동 계산하기

[입력] 10 3
[출력]
13
7
30
3
1
3.33

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.println(num1 + num2);
		System.out.println(num1 - num2);
		System.out.println(num1 * num2);
		System.out.println(num1 / num2);
		System.out.println(num1 % num2);
		System.out.printf("%.2f", (float)num1 / (float)num2);
	}
}


[1046] 정수 3개 입력받아 합과 평균 출력하기

[입력] 1 2 3
[출력]
6
2.0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		int num3 = sc.nextInt();
		int sum = num1 + num2 + num3;
		System.out.println(sum);
		System.out.printf("%.1f", (float)sum / 3 );
	}
}


[1047] 정수 1개 입력받아 2배 곱해 출력하기

[입력] 1024
[출력] 2048

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		System.out.println(num<<1);
	}
}

이 문제는 컨닝했다. 비트시프트의 존재와 어떻게 쓰는지는 알고 있었지만 2배 곱하는 방법은 몰랐기 때문,,,, 설명은 코드업 1047 문제 내의 ‘문제 설명’을 참고했다. 요약하자면

표현 의미
«1 2배
»1 반으로 나눈 값
«2 4배
»2 반으로 나눈 후 다시 반으로 나눈 값

Codeup 1047

[1048] 한 번에 2의 거듭제곱 배로 출력하기

[입력] 1 3
[출력] 8

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.println(num1<<num2);
	}
}


[1049] 두 정수 입력받아 비교하기1

[입력] 9 1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		if (num1 > num2)
			System.out.println(1);
		else
			System.out.println(0);	
	}
}

제출 후 모범 코드를 보니 if문을 사용하지 않고 1이 true, 0이 false이니 그냥 출력문에 조건을 입력한 것 같다.
20201002_02

그래서 나도 출력문에 조건 값을 주어 실행해봤는데 다음과 같은 오류가 떴다.
20201002_03

그래서 또 이번에는 “%d”가 아니라 Boolean형이면 “%b”겠거니 하고 서식 문자열을 수정했다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1>num2);
	}
}

20201002_04 ㅎㅎ.. 원하던 결과가 아니라 검색해봤는데 대부분 if문을 사용했고, if문을 사용하지 않은 코드를 찾을 수 있었다. 삼항연산자를 사용할 생각조차 안 했었는데..!! 여튼 삼항 연산자를 사용해서 코드를 더 짧게 만들 수 있다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1>num2? 1:0);
	}
}


[1050] 두 정수 입력받아 비교하기2

[입력] 0 0
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1==num2? 1:0);
	}
}


[1051] 두 정수 입력받아 비교하기3

[입력] 0 -1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1<=num2? 1:0);
	}
}


[1052] 두 정수 입력받아 비교하기4

[입력] 0 1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.printf("%d", num1!=num2? 1:0);
	}
}


[1053] 참 거짓 바꾸기

[입력] 1
[출력] 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		System.out.print(num==0? 1:0);
	}
}


[1054] 둘 다 참일 경우만 참 출력하기

[입력] 1 1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1&num2);
	}
}

//삼항 연산자
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1==num2&&num1==1? 1:0);
	}
}


[1055] 하나라도 참이면 참 출력하기

[입력] 1 1
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1|num2);
	}
}

//삼항 연산자
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1==1||num2==1? 1:0);
	}
}


[1056] 참/거짓이 서로 다를 때에만 참 출력하기

[입력] 1 1
[출력] 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1^num2);
	}
}

//삼항 연산자
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1==num2? 0:1);
	}
}


[1057] 참/거짓이 서로 같을 때에만 참 출력하기

[입력] 0 0
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1==num2? 1:0);
	}
}


[1058] 둘 다 거짓일 경우만 참 출력하기

[입력] 0 1
[출력] 0

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1==num2&&num1==0? 1:0);
	}
}


[1059] 비트단위로 NOT 하여 출력하기

[입력] 2
[출력] -3

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		System.out.print(~num);
	}
}


[1060] 비트단위로 AND 하여 출력하기

[입력] 3 5
[출력] 1

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num1 = sc.nextInt();
		int num2 = sc.nextInt();
		System.out.print(num1&num2);
	}
}



참고

태그:

카테고리:

업데이트:

댓글남기기