백준 한동안 열심히 풀다가 방학 시작하고 뜸해져서 다시 풀기 시작!
두달 동안 자바를 거의 안써서, 다시 감 살릴겸 기초부터 복습해보려합니다.
코딩테스트 워밍업은 다들 코드업 기초 100제로 하던데 저도 해보겠습니다.
코딩테스트 언어는 Java 입니다.
👉 코드업100제 : https://codeup.kr/problemsetsol.php
기초(출력) - 1001 ~ 1008
1001
1
2
3
4
5
6
// printf()를 이용해 해당 단어를 출력하시오.
public class Main{
public static void main(String[] args) {
System.out.println("Hello");
}
}
1002
1
2
3
4
5
6
// printf()를 공백을 포함한 문장을 출력한다.
public class Main{
public static void main(String[] args) {
System.out.println("Hello World");
}
}
1003
1
2
3
4
5
6
// 이번에는 줄을 바꿔 출력하는 출력문을 연습해보자.
public class Main{
public static void main(String[] args) {
System.out.println("Hello\nWorld");
}
}
1004
1
2
3
4
5
6
7
// 이번에는 작은 따옴표(single quotation mark)가 들어있는 특수한 형태의 출력문에 대한 연습을 해보자.
public class Main{
public static void main(String[] args) {
System.out.println("'Hello'");
}
}
1005
1
2
3
4
5
6
7
8
// 이번에는 큰 따옴표(single quotation mark)가
// 들어있는 특수한 형태의 출력문에 대한 연습을 해보자.
public class Main{
public static void main(String[] args) {
System.out.println("\"Hello World\"");
}
}
1006
1
2
3
4
5
6
7
8
// 이번에는 특수문자 출력에 도전하자!!
//"!@#$%^&*()" (단, 큰따옴표도 함께 출력한다.)
public class Main{
public static void main(String[] args) {
System.out.println("\"!@#$%^&*()\"");
}
}
1007
1
2
3
4
5
6
7
// 윈도우 운영체제의 파일 경로를 출력하는 연습을 해보자.
public class Main{
public static void main(String[] args) {
System.out.println("\"C:\\Download\\hello.cpp\"");
}
}
1008
1
2
3
4
5
6
7
8
9
10
// 키보드로 입력할 수 없는 다음 모양을 출력해보자.
//(** 참고 : 운영체제의 문자 시스템에 따라 아래와 같은 모양이 출력되지 않을 수 있다.)
public class Main{
public static void main(String[] args) {
System.out.println("\u250C\u252C\u2510");
System.out.println("\u251C\u253C\u2524");
System.out.println("\u2514\u2534\u2518");
}
}
기초(입출력) - 1010 ~ 1027
1010
1
2
3
4
5
6
7
8
9
// 정수형(int)으로 변수를 선언하고, 변수에 정수값을 저장한 후 변수에 저장되어 있는 값을 그대로 출력해보자
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n);
sc.close();
}
}
1011
1
2
3
4
5
6
7
8
9
// 문자형(char)으로 변수를 하나 선언하고, 변수에 문자를 저장한 후 변수에 저장되어 있는 문자를 그대로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char x = sc.next().charAt(0);
System.out.println(x);;
sc.close();
}
}
1012
1
2
3
4
5
6
7
8
9
// 실수형(float)로 변수를 선언하고 그 변수에 실수값을 저장한 후 저장되어 있는 실수값을 출력해보자..
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
float x = sc.nextFloat();
System.out.println(x);
sc.close();
}
}
1013
1
2
3
4
5
6
7
8
9
10
// 정수(int) 2개를 입력받아 그대로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a +" "+ b);
sc.close();
}
}
1014
1
2
3
4
5
6
7
8
9
10
// 2개의 문자(ASCII CODE)를 입력받아서 순서를 바꿔 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char x = sc.next().charAt(0);
char y = sc.next().charAt(0);
System.out.printf("%s %s",y,x);
sc.close();
}
}
1015
1
2
3
4
5
6
7
8
9
10
// 실수(float) 1개를 입력받아 저장한 후, 저장되어 있는 값을 소수점 셋 째 자리에서 반올림하여,
//소수점 이하 둘 째 자리까지 출력하시오.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
float x = sc.nextFloat();
System.out.printf("%.2f",x);
sc.close();
}
}
1017
1
2
3
4
5
6
7
8
9
// int형 정수 1개를 입력받아 공백을 사이에 두고 3번 출력해보자..
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.printf("%d %d %d",a,a,a);
sc.close();
}
}
1018
1
2
3
4
5
6
7
8
9
10
// 어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보자.
// 시:분 입력 , 시:분 출력
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split(":");
System.out.printf("%s:%s",s[0],s[1]);
sc.close();
}
}
1019
1
2
3
4
5
6
7
8
9
10
// 년, 월, 일을 입력받아 지정된 형식으로 출력하는 연습을 해보자.
//연, 월, 일이 ".(닷)"으로 구분되어 입력된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("\\.");
System.out.printf("%s.%s.%s",s[0],s[1],s[2]);
sc.close();
}
}
1020
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 주민번호 앞의 6자리는 생년월일(yymmdd)이고,
// 뒤 7자리는 성별, 지역, 오류검출코드이다.
// 주민번호를 입력받아 형태를 바꿔 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("-");
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
System.out.printf("%06d%07d",a,b);
sc.close();
}
}
1021
1
2
3
4
5
6
7
8
9
10
11
// 1개의 단어를 입력받아 그대로 출력해보자.
// 한 단어가 입력된다.(단, 단어의 길이는 50자 이하이다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
System.out.printf("%s",s);
sc.close();
}
}
1022
1
2
3
4
5
6
7
8
9
10
// 공백 문자가 포함되어 있는 문장을 입력받고 그대로 출력하는 연습을 해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
System.out.printf("%s",s);
sc.close();
}
}
1023
1
2
3
4
5
6
7
8
9
10
11
// 실수 1개를 입력받아 정수 부분과 실수 부분으로 나누어 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("\\.");
System.out.println(s[0]);
System.out.println(s[1]);
sc.close();
}
}
1024
1
2
3
4
5
6
7
8
9
10
11
12
// 단어를 1개 입력받는다. 입력받은 단어(영어)의 각 문자를 한줄에 한 문자씩 분리해 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("");
for(int i=0;i<s.length;i++){
System.out.printf("'%s'\n",s[i]);
}
sc.close();
}
}
1025
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 다섯 자리의 정수 1개를 입력받아 각 자리별로 나누어 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("");
int a = 10000;
for(int i=0;i<s.length;i++){
int num = Integer.parseInt(s[i]);
System.out.printf("[%d]\n",num*a);
a = a / 10;
}
sc.close();
}
}
1026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 입력되는 시:분:초 에서 분만 출력해보자.
// 콜론을 사이에 둔 형식으로 입력되어, h, m, s에 각각 정수값만 저장된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split(":");
int h = Integer.parseInt(s[0]);
int m = Integer.parseInt(s[1]);
int x = Integer.parseInt(s[2]);
System.out.println(m);
sc.close();
}
}
1027
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 년월일을 출력하는 방법은 나라마다, 형식마다 조금씩 다르다.
// 년월일(yyyy.mm.dd)를 입력받아,일월년(dd-mm-yyyy)로 출력해보자.
//(단, 한 자리 일/월은 0을 붙여 두자리로,년도도 0을 붙여 네자리로 출력한다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] s = sc.next().split("\\.");
int y = Integer.parseInt(s[0]);
int m = Integer.parseInt(s[1]);
int d = Integer.parseInt(s[2]);
System.out.printf("%02d-%02d-%04d",d,m,y);
sc.close();
}
}
기초(데이터형) - 1028 ~ 1030
1028
1
2
3
4
5
6
7
8
9
10
// 정수 1개를 입력받아 그대로 출력해보자.
// (단, 입력되는 정수의 범위는 0 ~ 4,294,967,295 이다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong(); // 자바는 따로 unsigned long이 존재하지 않음.
System.out.println(a);
sc.close();
}
}
1029
1
2
3
4
5
6
7
8
9
10
11
// 실수 1개를 입력받아 그대로 출력해보자.
//(단, 입력되는 실수의 범위는 +- 1.7*10-308 ~ +- 1.7*10308 이다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double d = sc.nextDouble();
System.out.println(d);
sc.close();
}
}
1030
1
2
3
4
5
6
7
8
9
10
11
12
// 정수 1개를 입력받아 그대로 출력해보자.
//단, 입력되는 정수의 범위는
//-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807 이다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
System.out.println(a);
sc.close();
}
}
기초(출력변환) - 1031 ~ 1037
1031
1
2
3
4
5
6
7
8
9
10
// 10진수를 입력받아 8진수(octal)로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.printf("%o",n);
sc.close();
}
}
1032
1
2
3
4
5
6
7
8
9
10
// 10진수를 입력받아 16진수(hexadecimal)로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.printf("%x",n);
sc.close();
}
}
1033
1
2
3
4
5
6
7
8
9
10
11
12
13
// 10진수를 입력받아 16진수(hexadecimal)로 출력해보자.
// 참고
// %d(10진수 형태)로 입력받고
// %X로 출력하면 16진수(hexadecimal) 대문자로 출력된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.printf("%X",n);
sc.close();
}
}
1034
1
2
3
4
5
6
7
8
9
10
11
12
// 8진수로 입력된 정수 1개를 10진수로 바꾸어 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
// 문자열을 8진수로 변환
int n = Integer.parseInt(s, 8);
System.out.printf("%d", n);
sc.close();
}
}
1035
1
2
3
4
5
6
7
8
9
10
11
// 16진수로 입력된 정수 1개를 8진수로 바꾸어 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
// 문자열을 8진수로 변환
int n = Integer.parseInt(s, 16);
System.out.printf("%o", n);
sc.close();
}
}
1036
1
2
3
4
5
6
7
8
9
10
// 영문자 1개를 입력받아 아스키 코드표의 10진수 값으로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
int n = (int) c;
System.out.printf("%d", n);
sc.close();
}
}
1037
1
2
3
4
5
6
7
8
9
10
11
// 10진 정수 1개를 입력받아 아스키 문자로 출력해보자.
// 단, 0 ~ 255 범위의 정수만 입력된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
char c = (char) n;
System.out.printf("%c", c);
sc.close();
}
}
기초(산술연산) - 1038 ~ 1046
1038
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.
// (단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.)
public class Main {
public static void main(String[] args) {
//int의 표현 범위
//-2,147,483,648 ~ 2,147,483,647
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
System.out.println(a + b);
sc.close();
}
}
1039
1
2
3
4
5
6
7
8
9
10
11
12
13
// 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.
// 단, 입력되는 정수는 -2147483648 ~ +2147483648 이다.
public class Main {
public static void main(String[] args) {
// long의 표현 범위
//-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
Scanner sc = new Scanner(System.in);
long a = sc.nextLong();
long b = sc.nextLong();
System.out.println(a + b);
sc.close();
}
}
1040
1
2
3
4
5
6
7
8
9
10
// 정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.
// 단, 입력되는 정수는 -2147483647 ~ +2147483647 이다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(-a);
sc.close();
}
}
1041
1
2
3
4
5
6
7
8
9
10
11
// 영문자 1개를 입력받아 그 다음 문자를 출력해보자.
// 영문자 'A'의 다음 문자는 'B'이고, 영문자 '0'의 다음 문자는 '1'이다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
int n = (int) c;
System.out.printf("%c", n + 1);
sc.close();
}
}
1042
1
2
3
4
5
6
7
8
9
10
11
// 정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자.
// 단, -2147483648 <= a <= b <= +2147483647, b는 0이 아니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a / b);
sc.close();
}
}
1043
1
2
3
4
5
6
7
8
9
10
11
//정수 2개(a, b) 를 입력받아 a를 b로 나눈 나머지를 출력해보자.
// 단, 0 <= a, b <= +2147483647, b는 0이 아니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a % b);
sc.close();
}
}
1044
1
2
3
4
5
6
7
8
9
10
11
12
// 정수를 1개 입력받아 1만큼 더해 출력해보자.
// 단, -2147483648 ~ +2147483647 의 범위로 입력된다.
// 계산되고 난 후의 값의 범위(데이터형)에 주의한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextInt();
long b = a + 1;
System.out.printf("%d", b);
sc.close();
}
}
1045
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.
// 단 0 <= a, b <= 2147483647, b는 0이 아니다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextInt();
long b = sc.nextInt();
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
double A = (double) a;
System.out.printf("%.2f", A / b);
sc.close();
}
}
1046
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 정수 3개를 입력받아 합과 평균을 출력해보자.
// 단, -2147483648 ~ +2147483647.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long a = sc.nextInt();
long b = sc.nextInt();
long c = sc.nextInt();
long sum = a + b + c;
System.out.println(sum);
System.out.printf("%.1f", (double) sum / 3);
sc.close();
}
}
기초(비트시프트연산) - 1047 ~ 1048
1047
1
2
3
4
5
6
7
8
9
10
11
12
// 정수 1개를 입력받아 2배 곱해 출력해보자.
//참고
//*2 의 값을 출력해도 되지만, 정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(a << 1);
sc.close();
}
}
1048
1
2
3
4
5
6
7
8
9
10
11
12
// 정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.
// 0 <= a <= 10, 0 <= b <= 10
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a << b);
sc.close();
}
}
기초(비교 연산) - 1049 ~ 1052
1049
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 정수(a, b)를 입력받아
// a가 b보다 크면 1을, a가 b보다 작거나 같으면 0을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a > b)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1050
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 정수(a, b)를 입력받아
// a와 b가 같으면 1을, 같지 않으면 0을 출력하는 프로그램을 작성해보자
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a == b)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1051
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 정수(a, b)를 입력받아
// b가 a보다 크거나 같으면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a <= b)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1052
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 정수(a, b)를 입력받아
// a와 b가 서로 다르면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a != b)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
기초(논리 연산) - 1053 ~ 1058
1053
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때
// 반대로 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
if (num == 1)
System.out.println(0);
else
System.out.println(1);
sc.close();
}
}
1054
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 두 개의 참(1) 또는 거짓(0)이 입력될 때,
// 모두 참일 때에만 참을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 1 && b == 1)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1055
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 개의 참(1) 또는 거짓(0)이 입력될 때,
// 하나라도 참이면 참을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 1 || b == 1)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1056
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 개의 참(1) 또는 거짓(0)이 입력될 때,
// 참/거짓이 서로 다를 때에만 참을 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if ((a == 1 && b==1) || (a==0 && b == 0))
System.out.println(0);
else
System.out.println(1);
sc.close();
}
}
1057
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 개의 참(1) 또는 거짓(0)이 입력될 때,
// 참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if ((a == 1 && b==1) || (a==0 && b == 0))
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
1058
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 두 개의 참(1) 또는 거짓(0)이 입력될 때,
// 모두 거짓일 때에만 참이 계산되는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a == 0 && b==0)
System.out.println(1);
else
System.out.println(0);
sc.close();
}
}
기초(비트단위논리연산) - 1059 ~ 1062
1059
1
2
3
4
5
6
7
8
9
10
11
// 입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
// 비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(~a);
sc.close();
}
}
1060
1
2
3
4
5
6
7
8
9
10
11
12
// 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.
// 비트단위(bitwise)연산자 &를 사용하면 된다.(and, ampersand, 앰퍼센드라고 읽는다.)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a & b);
sc.close();
}
}
1061
1
2
3
4
5
6
7
8
9
10
11
// 입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.
// 비트단위(bitwise) 연산자 |(or, vertical bar, 버티컬바)를 사용하면 된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a | b);
sc.close();
}
}
1062
1
2
3
4
5
6
7
8
9
10
11
// 입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.
// 비트단위(bitwise) 연산자 ^(xor, circumflex/caret, 서컴플렉스/카릿)를 사용하면 된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a ^ b);
sc.close();
}
}
기초(삼항연산) - 1063 ~ 1064
1063
1
2
3
4
5
6
7
8
9
10
11
// 입력된 두 정수 a, b 중 큰 값을 출력하는 프로그램을 작성해보자.
// 단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(a > b ? a : b);
sc.close();
}
}
1064
1
2
3
4
5
6
7
8
9
10
11
12
// 입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
// 단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
System.out.println((a < b ? a : b) < c ? (a < b ? a : b) : c);
sc.close();
}
}
기초(조건/선택실행구조) - 1065 ~ 1070
1065
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.
public class Main {
public static void even(int num) { // 함수 정의
if (num % 2 == 0)
System.out.println(num);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
even(a);
even(b);
even(c);
sc.close();
}
}
1066
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.
public class Main {
public static void oddeven(int num) { // 함수 정의
if (num % 2 == 0)
System.out.println("even");
else
System.out.println("odd");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
oddeven(a);
oddeven(b);
oddeven(c);
sc.close();
}
}
1067
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// 정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.
public class Main {
public static void oddeven(int num) { // 함수 정의
if (num % 2 == 0)
System.out.println("even");
else
System.out.println("odd");
}
public static void plusminus(int num) { // 함수 정의
if (num < 0)
System.out.println("minus");
else
System.out.println("plus");
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
plusminus(a);
oddeven(a);
sc.close();
}
}
1068
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
public class Main {
public static void score(int num) { // 함수 정의
if (num >= 90) {
System.out.println("A");
} else if (num >= 70) {
System.out.println("B");
} else if (num >= 40) {
System.out.println("C");
} else {
System.out.println("D");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
score(num);
sc.close();
}
}
1069
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// 평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.
// 평가 : 내용
// A : best!!!
// B : good!!
// C : run!
// D : slowly~
// 나머지 문자들 : what?
public class Main {
public static void score(char c) { // 함수 정의
switch (c) {
case 'A':
System.out.println("best!!!");
break;
case 'B':
System.out.println("good!!");
break;
case 'C':
System.out.println("run!");
break;
case 'D':
System.out.println("slowly~");
break;
default:
System.out.println("what?");
break;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
score(c);
sc.close();
}
}
1070
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// 월이 입력될 때 계절 이름이 출력되도록 해보자.
// 월 : 계절 이름
// 12, 1, 2 : winter
// 3, 4, 5 : spring
// 6, 7, 8 : summer
// 9, 10, 11 : fall
public class Main {
public static void season(int mon) { // 함수 정의
switch (mon) {
case 12:
case 1:
case 2:
System.out.println("winter");
break;
case 3:
case 4:
case 5:
System.out.println("spring");
break;
case 6:
case 7:
case 8:
System.out.println("summer");
break;
case 9:
case 10:
case 11:
System.out.println("fall");
break;
default:
System.out.println("wrong!");
break;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int mon = sc.nextInt();
season(mon);
sc.close();
}
}
기초(반복실행구조) - 1071 ~ 1077
1071
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 정수가 순서대로 입력된다.
// -2147483648 ~ +2147483647, 단 개수는 알 수 없다.
// 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
// while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while (num != 0) { // 자바는 goto문이 없음
System.out.println(num);
num = sc.nextInt();
}
sc.close();
}
}
1072
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// n개의 정수가 순서대로 입력된다.
// -2147483648 ~ +2147483647, 단 n의 최대 개수는 알 수 없다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i < num; i++) {
int n = sc.nextInt();
System.out.println(n);
}
sc.close();
}
}
1073
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 정수가 순서대로 입력된다.
// -2147483648 ~ +2147483647, 단 개수는 알 수 없다.
// 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while (num != 0) {
System.out.println(num);
num = sc.nextInt();
}
sc.close();
}
}
1074
1
2
3
4
5
6
7
8
9
10
11
12
// 정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
// 1씩 줄이면서 한 줄에 하나씩 1이 될 때까지 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = num; i >= 1; i--) {
System.out.println(i);
}
sc.close();
}
}
1075
1
2
3
4
5
6
7
8
9
10
11
12
13
// 정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
// 1씩 줄이면서 한 줄에 하나씩 0이 될 때까지 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while (num != 0) {
num--;
System.out.println(num);
}
sc.close();
}
}
1076
1
2
3
4
5
6
7
8
9
10
11
12
// 영문자(a ~ z) 1개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
int loc = (int) c;
for (int i = 97; i <= loc; i++) {
System.out.printf("%c ", i);
}
sc.close();
}
}
1077
1
2
3
4
5
6
7
8
9
10
11
// 정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 0; i <= num; i++) {
System.out.println(i);
}
sc.close();
}
}
기초(종합) - 1078 ~ 1092
1078
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int sum = 0;
int num = sc.nextInt();
for (int i = 1; i <= num; i++) {
if (i % 2 == 0) {
sum += i;
}
}
System.out.println(sum);
sc.close();
}
}
1079
1
2
3
4
5
6
7
8
9
10
11
12
// 'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
char c = sc.next().charAt(0);
while (c != 'q') {
System.out.println(c);
c = sc.next().charAt(0);
}
sc.close();
}
}
1080
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 1, 2, 3 ... 을 계속 더해 나갈 때,
// 그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지 계속 더하는 프로그램을 작성해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int sum = 0;
int last = 0;
while (true) {
last++;
sum += last;
if (sum >= num) {
System.out.println(last);
break;
}
}
sc.close();
}
}
1081
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 1부터 n까지, 1부터 m까지 숫자가 적힌
// 서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= b; j++) {
System.out.printf("%d %d\n", i, j);
}
}
sc.close();
}
}
1082
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운
// 영일(01)이는 16진수끼리 곱하는 16진수 구구단?에 대해서 궁금해졌다.
// 입력된 16진수에 1~F까지 순서대로 곱한, 16진수 구구단을 줄을 바꿔 출력한다.
// 계산 결과도 16진수로 출력해야 한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(16);
for (int i = 1; i < 16; i++) {
System.out.printf("%X*%X=%X\n", n, i, n * i);
}
sc.close();
}
}
1083
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 3 6 9 게임을 하던 영일이는 3 6 9 게임에서 잦은 실수로 계속해서 벌칙을 받게 되었다.
// 3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자.
// 1 부터 그 수까지 순서대로 공백을 두고 수를 출력하는데,
// 3 또는 6 또는 9인 경우 그 수 대신 영문 대문자 X 를 출력한다.
// 10 보다 작은 정수 1개가 입력된다.(1 ~ 9)
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 1; i < n + 1; i++) {
if (i % 3 == 0) {
System.out.printf("X ");
} else {
System.out.printf("%d ", i);
}
}
sc.close();
}
}
1084
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
// (빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)
// 주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
// 총 가짓 수를 계산해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int count = 0;
for (int i = 0; i < a; i++) {
for (int j = 0; j < b; j++) {
for (int k = 0; k < c; k++) {
System.out.printf("%d %d %d\n", i, j, k);
count++;
}
}
}
System.out.print(count);
sc.close();
}
}
1085
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 1초 동안 마이크로 소리강약을 체크하는 수를 h (헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
// 한 번 체크한 결과를 저장하는 비트 b (2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
// 좌우 등 소리를 저장할 트랙 개수인 채널 c (모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)
// 녹음할 시간 s가 주어질 때, 필요한 저장 용량을 계산하는 프로그램을 작성해보자.
// 실제로 일반적인 CD 음질(44.1KHz, 16bit, 스테레오)로 1초 동안 저장하려면 44100 * 16 * 2 * 1 bit의 저장공간이 필요하다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int h = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int s = sc.nextInt();
int space = h * b * c * s;
double megabyte = 8 * 1024 * 1024;
System.out.printf("%.1f MB", space / megabit);
sc.close();
}
}
1086
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
// 압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.
// 예를 들어 일반적인 1024 * 768 사이즈(해상도)의 각점에 대해
// 24비트(rgb 각각 8비트씩 3개)로 저장하려면 1024 * 768 * 24 bit의 저장 용량이 필요하다
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w = sc.nextInt();
int h = sc.nextInt();
int b = sc.nextInt();
int space = w * h * b;
double megabyte = 8 * 1024 * 1024;
System.out.printf("%.2f MB", space / megabyte);
sc.close();
}
}
1087
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 1, 2, 3 ... 을 순서대로 계속 더해나갈 때, 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
// 이번에는 그 때의 합을 출력해야 한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int i = 0;
int sum = 0;
while (true) {
i++;
sum += i;
if (sum >= num) {
System.out.println(sum);
break;
}
}
sc.close();
}
}
1088
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
// 3의 배수인 경우는 출력하지 않도록 만들어보자
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
for (int i = 1; i < num + 1; i++) {
if (i % 3 == 0) {
continue;
} else {
System.out.printf("%d ", i);
}
}
sc.close();
}
}
1089
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
// n번째 수를 출력하는 프로그램을 만들어보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int d = sc.nextInt();
int n = sc.nextInt();
for (int i = 1; i < n; i++) {
a += d;
}
System.out.println(a);
sc.close();
}
}
1090
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
// n번째 수를 출력하는 프로그램을 만들어보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int r = sc.nextInt();
int n = sc.nextInt();
for (int i = 1; i < n; i++) {
a *= r;
}
System.out.println(a);
sc.close();
}
}
1091
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// 시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
// n번째 수를 출력하는 프로그램을 만들어보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int d = sc.nextInt();
int n = sc.nextInt();
for (int i = 1;; i++) {
if (i == n) {
System.out.println(a);
break;
}
a += d;
}
sc.close();
}
}
1092
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// 자! 여기서...잠깐..
// 같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
// 매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
// 예를 들어 3명이 같은 날 가입/등업하고, 각각 3일마다, 7일마다, 9일마다
// 한 번씩 들어온다면, 처음 가입하고 63일 만에 다시 3명이 함께 문제를 풀게 된다
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int day = 1;
while (day % a != 0 || day % b != 0 || day % c != 0) {
day++;
}
System.out.println(day);
sc.close();
}
}
기초(1차원배열) - 1093 ~ 1095
1093
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr;
arr = new int[23];
for (int i = 0; i < n; i++) {
int num = sc.nextInt();
arr[num - 1] += 1; // 1번부터 번호가 불린 횟수를 공백을 기준으로 출력
}
for (int i : arr) {
System.out.printf("%d ", i);
}
sc.close();
}
}
1094
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr;
arr = new int[n];
for (int i = n - 1; i >= 0; i--) {
int num = sc.nextInt();
arr[i] = num;
}
for (int i : arr) {
System.out.printf("%d ", i);
}
sc.close();
}
}
1095
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// 출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
// 출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr;
arr = new int[n];
int min = 0;
for (int i = 0; i < n; i++) {
int num = sc.nextInt();
arr[i] = num;
}
min = arr[0];
for (int i : arr) {
if (i < min) {
min = i;
}
}
System.out.printf("%d ", min);
sc.close();
}
}
기초(1차원배열) - 1096 ~ 1099
1096
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
// n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.
// n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력되지 않는다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[][];
arr = new int[19][19]; // 바둑판 배열
for (int i = 0; i < n; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
arr[x][y] = 1;
}
for (int i = 1; i < arr.length; i++) {
for (int j = 1; j < arr[0].length; j++) {
System.out.printf("%d ", arr[i][j]);
}
System.out.println();
}
sc.close();
}
}
1097
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
// n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.
// 십자 뒤집기 횟수(n)가 입력된다.
// 십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[][];
arr = new int[20][20]; // 바둑판
for (int i = 1; i <= 19; i++) {
for (int j = 1; j <= 19; j++) {
arr[i][j] = sc.nextInt(); // 배열 정보 입력받기
}
}
int num = sc.nextInt(); // 뒤집기 횟수
for (int i = 0; i < num; i++) {
int x = sc.nextInt();
int y = sc.nextInt(); // 뒤집는 좌표 기준으로 가로 세로줄 전부 뒤집기
for (int j = 1; j <= 19; j++) { // 가로줄 뒤집기
if (arr[x][j] == 1) {
arr[x][j] = 0;
} else {
arr[x][j] = 1;
}
}
for (int k = 1; k <= 19; k++) { // 세로줄 뒤집기
if (arr[k][y] == 1) {
arr[k][y] = 0;
} else {
arr[k][y] = 1;
}
}
}
for (int i = 1; i < arr.length; i++) { // 뒤집은 바둑판 출력
for (int j = 1; j < arr[0].length; j++) {
System.out.printf("%d ", arr[i][j]);
}
System.out.println();
}
sc.close();
}
}
1098
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
// 막대를 놓는 방향(d:가로는 0, 세로는 1)과
// 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,
// 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int w = sc.nextInt();
int h = sc.nextInt();
int n = sc.nextInt(); // 막대 개수
int arr[][] = new int[w + 1][h + 1]; // 좌표가 (1,1) 부터 시작함
for (int i = 0; i < n; i++) {
int l = sc.nextInt();
int d = sc.nextInt(); // 1이면 세로 0이면 가로
int x = sc.nextInt();
int y = sc.nextInt();
if (d == 1) {
for (int j = 0; j < l; j++) {
arr[x + j][y] = 1;
}
}
else {
for (int j = 0; j < l; j++) {
arr[x][y + j] = 1;
}
}
}
for (int i = 1; i <= w; i++) {
for (int j = 1; j <= h; j++) {
System.out.printf("%d ", arr[i][j]);
}
System.out.println();
}
sc.close();
}
}
1099
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
// 오른쪽 또는 아래쪽으로만 움직였다.
// 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
// 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
// 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는 더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
// 10*10 크기의 미로 상자의 구조와 먹이의 위치가 입력된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int arr[][] = new int[11][11];
for (int i = 1; i < 11; i++) { // 미로 입력
for (int j = 1; j < 11; j++) {
arr[i][j] = sc.nextInt();
}
}
int x = 2;
int y = 2;
loop:
for (int i = x; i < 11; i++) { // 미로 이동
for (int j = y; j < 11; j++) {
if (arr[i][j] == 0) {
arr[i][j] = 9; // 오른쪽으로 이동
} else if (arr[i][j] == 1) { // 벽이면
x++; // 아래로 이동
y = j - 1; // 벽기준 왼쪽으로 돌아가기
break;
} else if (arr[i][j] == 2) {
arr[i][j] = 9;
break loop;
}
else{
break loop;
}
}
}
for (int i = 1; i < 11; i++) {// 이동경로 출렿가ㅣ
for (int j = 1; j < 11; j++) {
System.out.printf("%d ", arr[i][j]);
}
System.out.println();
}
sc.close();
}
}