Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준 2501번
- 배열
- 백준 #11382번 #
- 백준 1157번
- 알고리즘
- 피라미드 출력
- 잡다한 일
- 연속된 숫자의 합
- 해석
- Java
- C
- 차이
- 논리 연산
- 백준 5086번
- 대칭 차집합
- 백준 9506번
- javascript
- C++
- 백준 25305번
- 상세 풀이
- 5073번
- 일상생활 영어표현
- 백준 2587번
- Unity
- 직각 삼각형
- 백준 27433번
- 백준 2525번
- html
- 백준 1269번
- 백준 5597번
Archives
- Today
- Total
YunDev
구조적 프로그래밍, 드모르간 본문
하나의 입구, 하나의 출구를 가진 구성 요소만을 계층적으로 배치하여 프로그램을 구성하는 방법을 구조적 프로그래밍이라고 합니다. 구조적 프로그래밍은 순차, 선택, 반복이라는 3종류의 제어 흐름을 사용합니다.
알아보고자 하는 프로그램은 두 자리의 숫자만 입력받을 수 있게 제한하는 코드입니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while(num < 10 || num > 99) {
System.out.println("Enter a number between 1 and 99");
num = sc.nextInt();
}
System.out.println(num);
}
}
제어 부문의 조건식으로 인해 두 자리의 숫자가 입력이 되지 않은 경우 반복적으로 입력받게 됩니다. 여기서 or 연산자의 식 전체를 판단하지 않아도 하나라도 true가 나온다면 결과는 무조건 true, and 연산자의 식 중 하나라도 false이면 결과가 무조건 false로 나오게 되고, 나머지 피연산자의 평가를 수행하지 않는데, 이를 단축 평가라고 합니다.
코드를 조금 수정하여 제어식을 논리 부정 연산자 !을 사용하면 !(num >= 10 && num <= 99) 이러한 식과 같습니다.
'각 조건을 부정(부등호의 경우 <=, >=)하고 논리곱 -> 논리합, 논리합 -> 논리곱으로 바꾸고 전체를 부정하면 원래의 조건과 같다'는 법칙을 드모르간이라고 합니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
while(!(num >= 10 && num <= 99)) {
System.out.println("Enter a number between 1 and 99");
num = sc.nextInt();
}
System.out.println(num);
}
}
따라서 위 코드와 아래코드는 같은 결과를 출력하게 됩니다.
'자료구조와 알고리즘' 카테고리의 다른 글
[자료구조와 알고리즘] 소수 구하기 (0) | 2025.01.21 |
---|---|
[자료구조와 알고리즘] 기수 변환 (1) | 2025.01.17 |
[자료구조와 알고리즘] 배열, 최댓값 (0) | 2025.01.15 |
[자료구조와 알고리즘] 다중 루프 (0) | 2025.01.13 |
1. 알고리즘이란?, 연속된 숫자의 합 (0) | 2025.01.08 |