scpc - d13
1065
세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.
참고
if(조건)
{ //조건이 참일 때에만 실행되는 구역(코드블록의 시작)
실행1;
실행2;
...
} //코드블록의 끝
의 조건/선택 실행 구조는
주어진 “조건”을 검사해 그 결과가 참인 경우에만 코드블록 안에 작성된 내용들을 순서대로 실행한다.
예시
if(a%2==0)
{
printf(“%d”, a);
}
if(b%2==0)
{
printf(“%d”, b);
}
if(c%2==0)
{
printf(“%d”, c);
}
** a%2==0 은 a%2가 먼저 수행되고 그 결과를 0과 비교한 참/거짓 값을 계산한다.
a%2==0의 의미는 a를 2로 나눈 나머지를 0과 비교한 결과 값(참/거짓)이다.
따라서, if(a%2 == 0) 는 “a가 짝수라면?” 이라는 의미로 해석할 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int []arr = new int[3];
for(int i=0; i<3; i++) {
arr[i]= scanner.nextInt();
if(arr[i]%2 ==0) {
System.out.println(arr[i]);
}
}
}
}
1066
세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.
참고
if(조건)
{ //코드블록1 시작
... 실행...;
...
}
else
{ //코드블록2 시작
... 다른실행...;
...
}
의 조건/선택 실행구조는 주어진 “조건”을 검사해 참인 경우에는 코드블록1을 실행하고,
거짓인 경우에는 코드블록2를 실행한다.
예시
if(a%2==0)
{
printf(“%s”, “even”);
}
else
{
printf(“%s”, “odd”);
}
** else는 if 없이 혼자 사용되지 않는다. 또한, else 다음에 조건이 없는 이유는?
참이 아니면 거짓이고, 거짓이 아니면 참이기 때문에...
즉 if문의 조건식의 판별 결과는 2가지 경우(참 또는 거짓)로 계산되는데,
else 부분은 if문의 조건식의 결과가 거짓인 경우에 해당하기 때문이다.
** 실행해야 할 명령들이 여러 개일 때 코드블록 기호 { }로 묶어 주는데,
코드블록의 내용이 논리적으로 1개 단위라면 코드블록 기호를 생략할 수 있다.
if(a%2==0) printf("%s", "even");
else printf("%s", "odd");
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int []arr = new int[3];
for(int i=0; i<3; i++) {
arr[i]= scanner.nextInt();
if(arr[i]%2 ==0) {
System.out.println("even");
}
else {
System.out.println("odd");
}
}
}
}
1067
정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.
참고
조건/선택 실행 구조의 안에 조건/선택 실행 구조를 다시 "중첩"할 수 있다.
이는 "중첩(nested)"의 원리가 적용되는 내용으로 아래와 같은 구조가 가능하다.
if(조건1)
{
if(조건2) //조건문의 중첩
{
...
}
else
{
...
}
}
else
{
if(조건2)
{
...
}
else
{
...
}
}
위와 같은 조건/선택 실행구조는 조건/선택 실행구조를 중첩해
서로 다른 4가지(2가지*2가지)의 경우에 대해 다른 실행을 할 수 있도록 해준다.
** 어떤 조건들이 맞았을 때에는 해당부분의 코드블록 내용만 실행되고,
전체 조건/선택 실행구조를 빠져나간다. 즉, 다른 부분들은 실행되지 않는다.
** 소스코드의 들여쓰기는 사람이 보고 이해하기 쉽도록 하는 것으로써
들여쓰기나 줄바꿈을 하지 않더라도 동일하게 컴파일된다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
if(a >0){
System.out.println("plus");
}else{
System.out.println("minus");
}
if(a%2 ==0){
System.out.println("even");
}
else{
System.out.println("odd");
}
}
}
1068
점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
평가 기준
점수 범위 : 평가
90 ~ 100 : A
70 ~ 89 : B
40 ~ 69 : C
0 ~ 39 : D
로 평가되어야 한다.
참고
여러 조건들을 순서대로 비교하면서 처리하기 위해서 조건문을 중첩할 수 있다.
만약, 순서대로 검사하고 실행하기 위해 아래와 같이 중첩 시킨다면,
if(조건1)
{
...
}
else
{
if(조건2)
{
...
}
else
{
...
}
}
중첩된 구조는 논리적으로 1단위이기 때문에 코드블록 기호를 생략하면
아래와 같은 구조로 다시 표현될 수 있다.
if(조건1) { ... ; }
else if(조건2) { ... ; }
else { ...; }
이와 같이 조건을 계속 붙여나가면..
if(조건1) { ... ; }
else if(조건2) { ... ; }
else if(조건3) { ... ; }
else if(조건4) { ... ; }
else if(조건5) { ... ; }
else if(조건6) { ... ; }
else if(조건...) { ... ; }
else { ... ; }
위와 같은 구조를 만들어 순서대로 조건을 검사할 수 있다.
어떤 조건이 참이면, 그 부분의 내용을 실행하고 조건/선택 구조를 빠져나간다.
이렇게 조건들을 순서대로 검사할 때에는
중간에 범위가 빠지지 않았는지 꼼꼼하게 생각하고 조건들을 만드는 것이 중요하다.
이는 마치 수학에서 빠진 범위 없이 부등식을 만드는 것과 유사하다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a = scanner.nextInt();
if(a >= 90) {
System.out.println("A");
}else if(a >=70) {
System.out.println("B");
}else if(a>=40 ) {
System.out.println("C");
}else {
System.out.println("D");
}
}
}
1069
평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.
평가 내용
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?
참고
조건/선택문을 복합적으로 구성해 출력할 수도 있지만,
switch(정수값)
{
case 'A': //문자 'A'가 정수값 65('A'의 아스키 값)로 저장되기 때문에 가능하다.
...;
break;
case 'B':
...;
break;
case 'C':
...;
break;
default:
...;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String a = scanner.nextLine();
/*
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?
*/
switch(a) {
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?");
}
}
}
위와 같은 switch( ) ... case... break; 제어문을 사용할 수 있다.
** break; 를 사용하지 않으면 이후의 명령들도 계속 실행된다.
default: 는 제시된 case 를 제외한 나머지 모든 경우에 실행된다.
switch( ) 에 주어지는 값은 “정수"값만 가능하며,
문자도 아스키코드 정수값이기 때문에 가능하다.
'알고리즘 > SCPC준비' 카테고리의 다른 글
[JAVA] 코드업 1075~1079 자바코드 (0) | 2020.08.08 |
---|---|
[JAVA] 코드업 1070 ~ 1074 자바코드 (0) | 2020.08.08 |
[JAVA] 코드업 1060~ 1064 자바코드 (0) | 2020.08.08 |
[JAVA] 코드업 1055~1059 자바코드 (0) | 2020.08.08 |
[JAVA]코드업 1050 ~ 1054 자바코드 (0) | 2020.08.07 |