본문 바로가기

자바 Do,It 알고리즘(끝)

[자바 Do It! 알고리즘]Chapter01 기본 알고리즘(최댓값, 중앙값, 입력한 정수값 부호확인, 1부터 n까지의 합, 양수만, 2자리 양수, 곱셈표, 직각이등변삼각형)

이 카테고리는 제가 Do It! 자료구조와 함께 배우는 알고리즘 입문(자바편)을 보면서

책에서 나온 예시글을 옮겨온 것입니다.

책을 읽으면서 이해를 바탕으로 예시를 따라해보았습니다.

일단 1회차는 완독이 목표라 연습, 예제문제는 풀지 않습니다.

국비지원에서 자바를 배우고 있는데, 커리큘럼안에 다른 과정(HTML, SQL, NCS 등등)이 섞여있다보니

자바를 다루지 않는 시간에 기억이 가물가물해질까봐

하루에 하나라도 알고리즘을 익혀보자!라는 마인드로 시작하였습니다.

설명이 부족하고 사진만 올라가 있는 경우가 많을 겁니다.

이것은 단순히 제가 공부했던 흔적을 기록하기 위한 곳이기 때문입니다.

이해 부탁드립니다!

'알고리즘'은

'문제를 해결하기 위한 것으로, 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합'이라고 할 수 있다.

세 값의 최댓값 구하기

1. max에 a 값을 넣는다.

2. b 값이 max보다 크면 max에 b 값을 넣는다.

3. c 값이 max보다 크면 max에 c 값을 넣는다. (순차적 구조)

☞ stdIn.nextInt()가 호출되면 키보드로 입력한 정숫값을 얻을 수 있다.

세 값의 최댓값을 구하는 프로그램 테스트

세 값의 중앙값

이 알고리즘이 굉장히 어려웠는데

a b c 에

첫번째 케이스 예시로 3,2,1

두번째 케이스 예시로 2,3,1

세번째 케이스 예시로 1,3,2 를 넣어서 대입해보면 이해가 됩니다.

입력한 정수값이 양수인지 음수인지 0인지 판단하기

1부터 n까지의 정수 합 구하기(while)

☞ i 값이 n을 초과할 때 while문의 반복이 종료되므로 최종 i 값은 n이 아니라 n+1입니다.

1부터 n까지의 합 구하기(for)

양수만 입력하기(do ~ while)

☞ do 문은 일단 루프 본문을 할번 실행한 다음에 계속 반복할 것인지를 판단하는 사후판단 반복문입니다.

2자리의 양수(10~99) 를 입력합니다.

※ 논리연산자의 단축평가

no에 입력한 값이 5인 경우 식 'no < 10'의 평갓값은 true 이므로 오른쪽 피연산자 'no > 99'를 평가하지 않아도 제어식 'no < 10 || no > 99'의 값이 true가 됩니다. 왼쪽 피연산자 x와 오른쪽 피연산자 y 중 어느 하나라도 true면 논리식 x || y의 값은 true가 되기 때문입니다. 그러므로 || 연산자의 왼쪽 피연산자를 평가한 값이 true면 오른쪽 피연산자는 평가하지 않습니다. 마찬가지로 && 연산자의 경우 왼쪽 피연산자를 평가한 값이 false면 오른쪽 피연산자는 평가하지 않습니다. 이처럼 논리 연산의 식 전체를 평가한 결과가 왼쪽 피연산자의 평가 결과만으로 정확해지는 경우 으론쪽 피연산자의 평가를 수행하지 않는데, 이를 단축평가라고 합니다.

※ 드모르간 법칙 (잘 모르겠습니다. 사실...)

각 조건을 부정하고 논리곱을 논리합으로, 논리합을 논리곱으로 바꾸고 다시 전체로 부정하면 원래의 조건과 같다라는 법칙입니다.

x && y와 !(!x||!y)는 같습니다.

x || y와 !(!x&&!y)는 같습니다.

곱셈표 출력하기(다중루프)

직각 이등변 삼각형 출력(다중루프)