코드업 기초 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);
}
}
처음에 아 쉽네ㅋ 하면서 작성했던 코드가 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 | 반으로 나눈 후 다시 반으로 나눈 값 |
[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이니 그냥 출력문에 조건을 입력한 것 같다.
그래서 나도 출력문에 조건 값을 주어 실행해봤는데 다음과 같은 오류가 떴다.
그래서 또 이번에는 “%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);
}
}
ㅎㅎ.. 원하던 결과가 아니라 검색해봤는데 대부분 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);
}
}
댓글남기기