[백준] 1205번 : 등수 구하기 (C++) - 실버 4
·
코딩 테스트
링크 : https://www.acmicpc.net/problem/1205  해당 문제는 주어진 세 개의 입력값에 대하여 조건에 맞는 등수를 출력하는 문제다. 문제 해결 시 고려 사항이다. N : 기존에 등록된 점수의 개수S : 태수의 새로운 점수 → 조건에서 제시되지 않아 사용된 임시 변수P : 리스트에 갱신 가능한 점수의 총 개수이 문제를 해결하기 위한 가장 큰 방향성은 조건에 맞춰 점수를 갱신하되, 기존의 점수 중 갱신하려는 점수와 같은 것이 있다면 조건에 맞춰 갱신 여부를 결정하는 조건을 작성해야 한다는 것이다. 먼저 변수를 초기화한다./*N : 기존에 등록된 점수의 개수S : 태수의 새로운 점수P : 등록 가능한 점수의 최대 개수*/int N, S, P;int place = 1; // 갱신할 점..
Ubuntu 설치
·
OS
이번 글에선 쿠버네티스 글 중 하나인 '클러스터 환경 구성'에 필수적으로 필요한 OS인 Ubuntu(이하 우분투) 설치에 대해 다뤄보려 한다. 시작에 앞서 해당 작업은 Windows 환경에서 진행된다. 우분투는 리눅스의 배포판이며 무료로 사용할 수 있는 OS이다. 이를 PC에 배포하기 위해선 먼저 OS를 설치할 수 있는 부팅 디스크와 우분투 환경을 설치할 수 있는 디스크 파일인 우분투 ISO 파일이 준비되어야 한다.   먼저 ISO 파일을 다운로드 받을 수 있는 공식 우분투 링크이다. https://releases.ubuntu.com/focal/ Ubuntu 20.04.6 LTS (Focal Fossa)Select an image Ubuntu is distributed on three types of i..
[백준] 1018번 : 체스판 다시 칠하기 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '브루트 포스' 단계에 해당한다.링크 : https://www.acmicpc.net/problem/1018 해당 문제는 입력값으로 주어진 N x M 체스판에 대하여 8 x 8 형태로 임의의 구간을 지정해 수정해야되는 체스판 칸의 개수가 최소가 되는 경우에서의 수정이 필요한 체스판 칸의 개수를 출력하는 문제이다. 문제 해결 시 고려 사항이다.N : 행의 개수, 8 M : 열의 개수, 8 수정이 필요한 체스칸의 개수 출력변수 초기화에 앞서, 문제를 해결하기 위한 초기 접근 및 고려 사항에 대해 몇 가지 설명하려 한다. 작성자는 처음 풀었을때는 각 입력값을 벡터에 저장하고, 인덱스 별 값에 대하여 고쳐야 할 자리인지 확인하는 방식으로 코드를 작성했었는..
[백준] 2839번 : 설탕 배달 (C++) - 실버 4
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '브루트 포스' 단계에 해당한다. 링크 : https://www.acmicpc.net/problem/2839 해당 문제는 주어진 임의의 N이라는 정수에 대하여 가장 적은 x개의 3과 y개의 5의 합으로 표현하는 전형적인 브루트 포스 문제이다. 왜냐하면 주어진 조건 중, 두 수의 합으로 나타낼 수 없는 수에 대하여 -1을 출력해야 하는데, 나타낼 수 있는지에 대한 여부는 결론에 도달할 때까지 계산을 해봐야 하기 때문이다. 문제 해결 시 고려 사항이다.N : 설탕 봉지 수설탕 봉지 무게 : 3 || 5가장 적은 봉지 수로 표현되어야 함3과 5의 합으로 표현하지 못할 경우 -1 출력 위의 조건에 맞게 먼저 변수 초기화 후, 입력값을 받는다.int N,..
[백준] 2559번 : 수열 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '누적합' 단계에 해당한다. 링크 : https://www.acmicpc.net/problem/2559 해당 문제는 하나의 배열에 누적합을 표현함으로써 구간별 합을 표현하는 방식에 대해 고민해보기 좋은 문제였다. 기본적으로 위와 같은 문제를 해결하는 원리는 부분 합의 시작 인덱스와 끝을 나타내는 변수 두 개를 선언하고, 각 구간별 합을 구한 뒤, 이전 구간의 합과 비교하여 더 큰 값을 누적합 저장 변수에 갱신하는 방향으로 진행된다. 방향성 자체는 이러하나, 사실 별도의 변수 두 개를 선언할 필요는 없다. 왜냐하면 일종의 포인터 역할을 하는 두 개의 변수를 별도로 선언하여 원초적으로 각 구간의 합을 매번 구하는 것과, 각 입력값에 대한 합의 결과를..
[백준] 20920번 : 영단어 암기는 괴로워 (C++) - 실버 3
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 단계별 문제 풀이 중 '심화' 단계에 해당하는 조건에 따른 정렬 문제이다. 링크 : https://www.acmicpc.net/problem/20920    다음으로 코드 전문이다. 문제 해결을 위해 떠올렸어야 할 요소들을 각각의 코드와 비교하며 서술하고자 한다.#include #include #include #include using namespace std;void fast_io() { ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);}bool compare(pair &a, pair &b) { if (a.second == b.second) { if (a.first.length() ..
[백준] 1008번 : A / B (C++) - 브론즈 5
·
코딩 테스트
이 문제는 백준 알고리즘에서 제공하는 나눗셈 연산에 대한 기본 문제이다. 링크 : https://www.acmicpc.net/problem/1008    문제 난이도에 비해 정답 비율이 낮은 것을 볼 수 있는데, 출력 조건을 지키지 않아 그런 것으로 예상된다. 문제 자체는 정말 간단하다. A / B를 구현하되, 오차가 10^-9 이하이기만 하면 되지만, 이 문제에서 얻어가야 하는 내용은 바로 C++에서의 소수점 표현 방법이다. C++는 입출력 시 기본적으로 표준 라이브러리의 모든 요소가 담겨 있는 std 네임스페이스(namespace) 내부의 cout과 cin을 사용한다. 이는 기존의 C 입출력에 사용되는 printf, scanf 함수와 같은 역할을 수행한다고 생각하면 된다.  여기서 차이점은 cout은..
도커 사용 예시 - Docker Desktop & Docker Hub
·
도커
글을 시작하기에 앞서 오늘 작성할 글은 도커 데스크탑의 실질적인 사용 예시로 도커에 대한 기본 개념과 설치 과정을 알아야한다. 만약 해당 내용에 대한 숙지가 없다면 앞서 작성한 글의 내용을 먼저 읽고 오는 것이 좋다. https://taks-embdd.tistory.com/3 도커(Docker) 기본 개념 & 설치 방법도커는 특정 응용 프로그램과 의존성(dependency)를 하나로 패키징하여 독립된 공간인 컨테이너(Container)에서 동작할 수 있도록 하는 '컨테이너 기반 플랫폼'이다. 독립된 공간이라하면 가상 머신(taks-embdd.tistory.com 우리가 도커 이미지를 만들려는 근본적인 이유는 바로 '배포의 용이성' 때문이다. AI 환경을 예로 들어보자. AI를 프로젝트나 연구 목적으로 활..
도커(Docker) 기본 개념 & 설치 방법
·
도커
도커는 특정 응용 프로그램과 의존성(dependency)를 하나로 패키징하여 독립된 공간인 컨테이너(Container)에서 동작할 수 있도록 하는 '컨테이너 기반 플랫폼'이다. 독립된 공간이라하면 가상 머신(Virtual Machine)을 떠올릴수도 있는데, 이는 개념이 조금 다르다. 가상 머신의 경우, 기존의 PC 자원을 나누어 마치 '하나의 독립된 또 다른 PC'처럼 사용할 수 있도록 한다. 즉, 원래의 컴퓨팅 자원을 n개의 부분으로 나누어 하나의 PC 안에 m개의 PC가 각각 독립적으로 작동하고 있는 형태로 활용된다고 생각하면 된다. 이때, 기존의 자원은 물리적으로 분할할 수 없기 때문에 하드웨어 내부에서 특정 로직을 통해 논리적으로 나누는 방법 밖에 없는데, 이렇게 내부에서 PC를 논리적으로 구성..
온프레미스 K8s 환경 구축 - 기본 목표 및 개념 설명
·
쿠버네티스
이 프로젝트의 가장 근본적인 방향성은 '애플리케이션을 배포할 수 있는 서버 환경 제공'이다. 즉, 특정 서비스를 제공하기 위한 애플리케이션을 '이미지 형태'로 가지고 있다면 사용자가 하드웨어(Hardware)와 관련된 부분의 구성 과정을 생략하고, 해당 서버 자원을 사용할 수 있도록 하는 IaaS 또는 PaaS 형태로의 제공을 주된 목표로 하고 있다. 상기 목표를 달성하기 위해선 이미지 빌드, 컨테이너화 등의 과정이 선행되어야 하는데, 이러한 기법이 사용되기 시작한건 바로 마이크로서비스(Microservice)라는 개념이 등장했기 때문이다. 어떠한 서비스에 대하여 기존에 대한 개발의 관점은 모놀리틱(Monolithic)한 사고 방식이었다. 여기서 모놀리틱이란 애플리케이션을 작동시키기 위한 모든 구성요소가..