본문 바로가기

전체 글

(351)
[리눅스] 27. 흐름 제어: if 분기 우리가 작성 중인 보고서 생성 스크립트가 실행될 때 사용자 권한에 따라 결과를 어떻게 조정할 수 있을까? 이 문제에 대한 해결책은 스크립트 내에서 테스트 결과에 따라 방량을 바꾸는 방법을 찾는데 있다. 프로그래밍식으로 말하면, 프로그램을 분기할 필요가 있다. 1. if의 사용 1) 쉘 x = 5 if [$x = 5]; then echo "x equals 5." else exho "x does not equal 5." fi x=5라는 조건을 만족하면 "x는 5다" 라고 출력이 되고, 그렇지 않으면 "x는 5가 아니다라는 문구가 출력이 되는 코드이다. 2) 커맨드라인 $ x=5 $ if [$x = 5]; then echo "equals 5"; else echo "does not equal 5"; equals..
[리눅스] 26. 하향식 설계 대형 프로젝트를 진행하는 경우에는 크고 복잡한 작업을 작고 간단한 단위로 나누는 것이 필요하다. 그 중 방법 중 하나가 하향식 설계이다. 최상위 단계들을 정의하고 이러한 단계들을 구체적으로 나눈어가는 과정을 하향식 설계하고 한다. 이 방법은 크고 복잡한 작업을 단순하고 작은 단위의 작업으로 세분화시킬 수 있다. 1. 쉘 함수 1. 페이지 열기 2. 페이지 헤더 열기 . . . 7. 날짜 및 시간 출력하기 8. 페이지 본문 닫기 9. 페이지 닫기 위는 html 문서를 생성하는 과정이다. 다음 개발 단계로 진행하기 전에 7번째와 8번째 단계 사이에 몇 가지 작업을 추가할 것이다. 1) 시스템 가동시간(uptime)과 부하량 : uptime은 가장 최근에 시스템이 종료되거나 재부팅된 이후부터의 가동시간을 나타..
[리눅스] 25. 프로젝트 시작하기 1. 간단한 HTML 문서 생성 텍스트 에디터로 page 라는 파일을 만들 것이다. $ vim page # page echo " Page Body " page에서 우리가 흔히 아는 HTML 태그를 입력을 한다. 이제 이 파일의 실행 퍼미션을 설정하고 실행하면 된다. $ chmod 755 page $ page 2. 데이터 입력해보기 1) 변수와 상수 # page title = Page Title body = Page Body echo " $body "​ title이랑 body를 변수로 지정해서 html 태그 안에서 변수를 사용할 수 있다. 2) 변수와 상수에 값 할당 여기서는 앞서 배웠던 확장에 대한 지식을 이용할 것이다. "variable=value : 변수 이름=문자열" (변수 할당문에는 변수 이름과 ..
[BOJ] 14503. 로봇 청소기 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - while문을 사용해서 특정 조건이 끝날 떄, 루프를 해제 - while문 안에 for문을 사용해서 동서남북을 체크 - for문으로 체크가 안되거나 완료 시, 보는 방향을 그대로 하고 뒤로 후진 2. 시간복잡도 - O(NM) : 50^2 3. 자료구조 - 2차원 배열 : graph[][] - 청소가 안된 빈 칸 : 0, 벽 : 1, 청소가 완료된 칸 : 2..
[RabbitMQ] 설치 및 운용 (Fast API) 프로젝트를 진행하면서 설치 및 운용 루틴을 기록해둔 글이다. 프로젝트에서 Python의 Pika 라이브러리를 사용하고 RabbitMQ는 Topic Exchange를 사용하였다. 또한, GCP환경에서 docker 서버를 띄우는 것임. 1. RabbiMQ 실행 GCP에서 docker로 RabbitMQ 서버를 띄우자 docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management 5672와 관리자 페이지인 15672 포트를 사용한다. (listeners.tcp.default = 5672, management.tcp.port = 15672) 그리고 터미널에서 래빗엠큐 컨테이너의 bash를 실행시킨다. docker exec -it rabb..
[BOJ] 10819. 차이를 최대로 https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 배열안 2개의 원소 값 차이의 합 중 최대 값을 구하는 문제. - 하나의 원소를 먼저 선택하고, n-1개 중 추가적으로 계속 뽑는 형식. - n-1, n-2 ... 재귀적으로 들어가면서 차이 값을 구한다. 2. 시간복잡도 - O(2^n) 3. 자료구조 - 백트래킹 : 재귀 """ 2. 정답코드 입력 예제(1) 6 20 1 15 8 4 10 출력 예제(1) 62 코드 imp..
[BOJ] 7576. 토마토 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 입력받은 그래프에서 토마토가 있는 지점부터 for문을 돌려 BFS 처리는 할 것이다. - 방문기록 체크하면서 돔. - 방문기록이 False 경우와 방문하고자 하는 인덱스 값이 0인 경우에만 방문해서 인덱스 값을 +1로 하고 방문기록을 True로 한다. - bfs를 완료하고 열 인덱스에 값이 0이 존재하는 경우, -1을 print 2. 시간복잡..
[BOJ] 1759. 암호 만들기 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 1. 해결방법 """ 1. 아이디어 - 최소 1개 이상의 모음(a e i o u)과 최소 2개 이상의 자음으로 구성되어 있고, 오름차순으로 정렬을 한다. - if문으로 먼저 1개 이상의 모음을 구하고, 그 다음은 자음 2개 이상을 조건화 한다. - 원소 중복이 일어나면 안되기 때문에 방문기록을 체크할 것이다. 2. 시간복잡도 3. 자료구조 - 백트래킹 : 재귀 """ 2. 정답코드 입력 예제(1) 4 ..