일단 씻고 나가자

23.07.14 본문

Study/닥치는 대로 주워 담기

23.07.14

일단 씻고 나가자 2023. 7. 14. 23:30

2023. 07. 14 금요일

 

- 하노이탑 논리 및 구현 방법?

: start 막대에 n개의 모든 원반이 처음에 세팅돼있고, mid의 빈 두 번째 막대와 to의 보내고자 하는 막대 3개가 있다고 하자.

하노이탑을 옮기는 방법은 우선 마지막 원반을 제외한 모든 원반을 mid로 옮기고, 마지막 원반을 start에서 to로 보낸 후, mid에 있는 n-1개의 원반을 마지막으로 to로 보내는 알고리즘을 갖는다.

 

 

맨 처음 if(n==1) 의 의미는 아직 잘 모르겠다.

 

 

- 정수의 한 자리만 바꿨을 때 최댓값이 되는 값을 구하는 방법?

: 각 자릿수를 역순으로 하나씩 탐색하면서 그 순간까지의 max 값을 계속 반영하는 배열을 하나 만든다.

이후 원래의 배열과 같은 자리일 때 다른 숫자라면 해당 자릿수를 바꿔주면 된다는 의미로, 해당 숫자가 원래 어디 자리였는지 확인한 후 swap한다.

 

 

- 쉘 스크립트의 연산자 활용, 계산값 출력(정수, 실수) 방법?

: 기본적으로 ‘expr `’ 기호를 사용하며, (), * 연산자의 앞엔 항상 \를 적어주며 수식을 적는다. 또한 연산자, 숫자, 변수, 기호 사이는 모두 띄어쓰기를 넣어야 한다.

num=`expr \( 3 + 4 \) \* 3`

내부적으로 ‘`’ 기호는 해당 결과를 받아온다는 의미를 갖는다.

 

바로 계산값을 불러오려면 echo ‘3+4/5’ | bc 처럼 적는다.

echo ‘3+4/5’ | bc l 로 적으면 소수점을 보여주고, bc만 적으면 정수 형태로 출력.

파이프라인(bc)을 적지 않으면 문자열로 인식하여 ‘3+4/5’를 그대로 출력한다.

 

 

- 쉘 스크립트의 if문 적는 방법? 비교 연산자 및 null 여부 연산자?

: if [ 조건 ] then 명령문 else 명령문 fi 형식으로 적는다.

들여쓰기는 반드시 요구되지는 않는다.

 

비교 연산자는 ==, != 로 같은지 여부를 검사하고, -z 문자, -n 문자로 null, not null 여부를 boolean으로 반환.

>, < 등은 정상 작동하지만 eq(equal), ne(not equal), lt(less than), le(less or equal), gt(greater than), ge(greater or equal) 등으로 사용할 수 있다.

1 eq 2 같이 사용한다.

추가로 e 파일명 등으로 파일의 존재 여부 등의 기능을 제공하는 파일 검사 명령어도 존재한다. -e/d/h/f/r/s/u/w/x 등이 있다.

 

 

- 쉘 스크립트의 인자를 넘겨주는 방법과 받는 방법?

: ./파일명.sh 인자1 인자2 처럼 인자를 넘겨주며,

파일 내에선 if [ $1 gt $2 ] 처럼 인자의 순서를 명시한다.

 

 

- [Effective Java] 와일드카드란?

: 불공변인 제네릭에 대해 여러 타입을 아우를 수 있는 타입을 만들기 위함.

 

 

StringObject의 하위 타입이지만, List<String>List<Object>의 하위 타입이 아니므로 해당 방식으로 사용할 시 에러를 낸다.

(Object[] arrString[] arr의 상위 타입이지만, Collection<Object>Collection<String>의 하위 타입이 아님.)

<? extends T> (== <?>), <? super T> 으로 사용하며, 각각 하한 상한 타입을 설명함.

https://mangkyu.tistory.com/241

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.07.18  (0) 2023.07.18
23.07.17  (0) 2023.07.18
23.07.13  (0) 2023.07.14
23.07.12  (0) 2023.07.12
23.07.11  (0) 2023.07.12