일단 씻고 나가자

23.07.12 본문

Study/닥치는 대로 주워 담기

23.07.12

일단 씻고 나가자 2023. 7. 12. 21:16

2023. 07. 12 수요일

 

- 그리디 알고리즘? 장단점? 그리디 알고리즘 적용 조건? 예시 문제?

: Greedy Algorithm. 매 순간 최선의 해를 선택함.

빠르게 근사치를 계산할 수 있지만, 결과적으론 최적해(정답)가 아닐 수 있음.

 

그리디 알고리즘을 적용할 수 있는 조건 2가지는 다음과 같다.

1. 탐욕적 선택 특성(Greedy choice property)

// 지금의 선택이 다음 선택에 영향을 주지 않음

 

2. 최적 부분 구조(Optimal substructure)

// 전체 문제의 최적해는 부분 문제의 최적해로 이루어짐

 

예를 들면 거스름돈 최소 동전 개수 문제가 있는데, 500, 100원 단위만 있다면 500100으로 이루어질 수 있으므로 조건에 부합하지만, 400원 단위가 추가되면 400만으로 500을 만들 수 없으므로 부분 문제가 될 수 없다.

또한 Activity Selection Problem, 즉 여러 시작, 종료 시각이 주어지고 최대의 활동에 대해 찾는 문제에 대해선 종료 시각에 대해 오름차순으로 정렬 후 그리디로 활용할 수 있다.

 

 

- vim의 텍스트 선택, 복사/붙여넣기, 줄 삭제/복원, 라인 합치기, /마지막 줄 이동 방법?

: 일반 모드에서 v를 누르면 visual 모드로 바뀐다.

그때 커서를 방향키(혹은 상하좌우 jkhl )를 누르면 현재 커서부터 이동하며 드래그가 된다.

(라인 단위 선택은 shift + v)

 

y를 누르면 현재 드래그된 텍스트가 복사되며,

이후 일반 모드에서 원하는 위치에 가 p를 누르면 붙여넣기가 된다.

 

줄 전체 삭제는 원하는 라인에서 d를 두 번 누르면 삭제되며,

드래그 후 d를 누르면 선택된 부분만 삭제된다.

삭제한 내용을 복원하고 싶으면 u를 누르면 되며, 이는 이전 행동 취소(ctrl + z)와 동일.

 

현재 커서의 라인 뒤로 아랫 라인을 이어 붙이고 싶다면 shift + j

 

첫 줄로 이동은 명령 모드에서 0, 마지막 줄로 이동은 명령 모드에서 $

 

 

- vim의 줄 번호를 나오게 하는 명령어와 설정 파일 방법?

: 명령 모드에서 set number/nonumber로 각 줄 앞에 줄 번호를 나타나게 할 수 있다.

 

이런 방법은 매번 vim에 들어갈 때마다 설정해주어야 하는데, 이런 설정을 일관적으로 매번 실행 때마다 적용하는 방법은 홈에서(cd ~) vi(m) .vimrc 입력 후 해당 설정에 대한 텍스트를 한 줄에 하나씩 작성하고 wq 하면 적용된다.

 

 

- 쉘 스크립트란? 어디에 사용? 작성, 실행 방법? 문자열 출력, 주석 문법?

: 쉘을 사용하여 프로그래밍을 하는 방법. 서버 작업 자동화 및 운영(DevOps)를 위해 기본적으로 익혀둘 필요가 있음.

 

기본적으로 파일로 작성 후 파일을 실행하면 되며, 따라서 실행 권한을 가지고 있어야 함.

(chmod 숫자 파일이름.sh 으로 실행 권한 부여)

파일의 첫 줄은 #!/bin/bash 로 시작되어야 하고, 일반적으로 파일이름.sh 형태로 작성한다.

./파일이름.sh 로 실행한다.

 

echo “원하는 문자열cmd 창에 문자열을 출력한다.

# 이후 작성하는 문자는 주석처리 된다.

 

 

- [Effective Java] 태그 클래스? 태그 클래스의 문제점? 해결 방법?

: 태그 클래스란 클래스 내부에서 enum{A1, A2}의 형태로 클래스의 형태를 강제하며, 실제 객체는 해당 클래스 내부의 객체로 인해 활용되는 클래스이다.

 

 

사진처럼 생성자를 각각 나누어 조건에 따라 내부 shape 객체를 구분, 생성하는 방식이다.

이런 방식은 내부의 로직을 처리할 때 객체에 따라 로직을 달리하여야 하고 따라서 새로운 조건 및 구분이 추가될 때마다 코드를 추가해야 하는 어려움이 있다.

 

이런 문제를 해결하기 위해선 태그를 지우고 상위 클래스를 interface 혹은 abstract로 구분하여 구분마다 해당 클래스를 상속받아 로직을 달리 작성하는 방식을 채용해야 한다.

태그 달린 클래스를 써야 하는 경우는 거의 없다.

 

 

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

23.07.14  (0) 2023.07.14
23.07.13  (0) 2023.07.14
23.07.11  (0) 2023.07.12
23.06.22  (0) 2023.06.23
23.06.21  (0) 2023.06.22