728x90
반응형

분류 전체보기 104

[소프티어] 지우는 소수를 좋아해 (파이썬)

난이도 : ★★★★☆ https://softeer.ai/practice/info.do?idx=1&eid=582 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai 📄 문제 여러 체육관을 거쳐 체육관 배지를 얻은 후 마지막 포켓몬 리그에서 사천왕과 챔피언에게 도전해야 하는 임무 각각의 체육관에는 체육관 관장들이 있고 그 관장들을 이겨야 체육관 배지를 얻을 수 있다. 관장들을 이기기 위해선 그 관장들이 갖고 있는 레벨(level)보다 높아야 한다. 체육관 관장들은 체육관 오는 길에 레벨 제한을 두었다. ‘X레벨 이하 지원자는 오지 마시오.’ 지우는 자신이 포켓몬 리그에 나가기 위한 최소한의 레벨이 알고 싶어졌다. 지우는 자신의 레벨도 소수(Prime Number)에 맞춰서 포..

[소프티어] [인증평가(3차) 기출] 교차로 (파이썬)

난이도 : ★★★☆☆ https://softeer.ai/practice/info.do?idx=1&eid=803 Softeer 자율주행차가 아래와 같은 교차로를 통과하는 상황을 생각하여 보자. 이 문제에서 다루는 교차로에서는 직진만 가능하기 때문에, 아래 그림과 같은 네 가지 방법으로만 교차로 softeer.ai 📄 문제 자율주행차가 교차로를 통과하는 상황 A, B, C, D 각 도로의 맨 앞에 있는 자동차는 자신을 기준으로 오른쪽에 위치한 도로에 차량이 있으면 1초 동안 출발하지 않고, 차량이 없으면 즉시 교차로를 통과한다. (반시계 방향에 차가 있으면 출발하지 않고 1초 기다림) A 위치에 있는 차량의 오른쪽에 있는 도로는 D B 위치에 있는 차량의 오른쪽에 있는 도로는 A C 위치에 있는 차량의 오른..

[운영체제] 운영 체제란?

운영 체제(OS, Operating System) 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어 운영체제는 하드웨어를 관리하고, 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 응용 프로그램과 하드웨어 간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다. 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 즉, 중개자 역할을 다. 운영체제의 목적 1. 컴퓨터의 하드웨어 관리 컴퓨터에는 수 많은 하드웨어가 존재한다. CPU, 메모리, 디스크, 키보드, 마우스, 모니터, 네트워크 등이 있으며 이를 잘 관리해주어야 컴퓨터를 효율적으로 사용할 수 있다. 운영체제의 성능이 좋을수록 컴퓨터의..

[자바] 추상클래스와 인터페이스의 차이

추상클래스 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이다. 이러한 특성 때문에 미완성 설계도라고 표현한다. 추상클래스는 상속을 위한 클래스이기 때문에 따로 객체(인스턴스)를 생성할 수 없다. 상속을 통해서 자손클래스에 의해서만 완성될 수 있다. 추상 클래스는 추상 메소드를 0개 이상 가지고 있다는 것을 제외하고는 일반 클래스와 별 다를 것이 없다. class 앞에 "abstract" 예약어를 붙여 해당 클래스가 추상 클래스임을 나타낸다. 또한 메서드도 "abstract" 예약어를 붙여 추상 메서드를 선언할 수 있다. abstract class 클래스이름 { ... public abstract void 메서드이름(); }​ 추상클래스의 특징 추상 클래스는 추상 메서드를..

Programming/Java 2023.07.13

[자바] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점

객체지향 프로그래밍에서 다형성을 설명할 때, 하나의 클래스 내부에 같은 이름의 기능을 여러 개 정의하거나 상위 클래스의 기능을 하위 클래스에서 다시 정의하는 것, 즉, 오버라이딩과 오버로딩에 대해서 간략하게 짚고 넘어갔었다. 이번에는 오버라이딩과 오버로딩이 구체적으로 어떻게 사용되는지. 또, 어떤 차이점을 가지고 있는지에 대해서 알아보자. 다형성 다형성이란, 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 말한다. 자바에서는 주로 오버로딩(Overloading)과 오버라이딩(Overriding)을 통해서 다형성을 지원한다. 오버로딩(Overloading) - 확장 하나의 클래스 내부에서 확장하는 개념 오버라이딩(Overriding) - 재정의 부모 클래스의 상속을 받은 자식 클래..

Programming/Java 2023.07.09

[네트워크] Blocking I/O & Non-Blocking I/O

I/O (Input / Output) I/O 작업은 Kernel level에서만 수행할 수 있다. 따라서, Process, Thread는 커널에게 I/O를 요청해야 한다. 어떠한 기기(디바이스)를 통해 입출력이 이루어지는 작업을 모두 I/O라고 한다. 즉, 네트워크를 통한 데이터 전송, 컨솔 출력 등과 같은 것도 포함된다. 이러한 I/O는 어플리케이션 성능에 가장 많은 영향을 끼친다. I/O에서 발생하는 시간은 CPU를 사용한 시간과 대기 시간 중에 대기 시간에 속하기 때문에 I/O가 많아진다느 것은 어플리케이션이 연산을 할 때까지 CPU가 아무것도 못하고 대기하는 시간이 길어진다는 의미이고, 이는 어플리케이션의 처리 속도 저하로 이어진다. 따라서 높은 성능을 보장해야하는 어플리케이션에서는 I/O가 큰 ..

CS/Network 2023.07.06

[네트워크] Blocking/Non-blocking & Synchronous/Asynchronous

동기/비동기는 우리가 일상 생활에서 많이 들을 수 있는 말이다. Blocking과 Synchronous, 그리고 Non-blocking과 Asysnchronous를 서로 같은 개념이라고 착각하기 쉽다. 각자 어떤 의미를 가지는지 간단하게 살펴보자. 2대2 매트릭스로 정리된 그림이다. 그림을 보면 Blocking 이면 반드시 Sync 가 아니고, Non-blocking 이면 반드시 async 도 아니다. 즉, Blocking / Non-blocking 과 Sync / Async 는 다른 개념이라는 것이다. Blocking / Non-blocking 과 Sync / Async 는 '관점'을 어떻게 두느냐에 따라 다르다. 블로킹 Blocking A 함수가 B 함수를 호출 할 때, B 함수가 자신의 작업이 종료..

CS/Network 2023.07.05

[네트워크] 로드 밸런싱 (Load Balancing)

로드 밸런싱 (Load Balancing) 이란? 네트워크 또는 서버에 가해지는 부하(Load)를 분산(Balancing) 해주는 기술이다. 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 의미한다. 로드 밸런싱의 필요성? 로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술이다. 서비스의 제공 초기 단계라면 적은 수의 클라이언트로 인해 서버 한 대로 요청에 응답하는 것이 가능하다. 하지만 사업의 규모가 확장되고, 클라이언트의 수가 늘어나게 되면 기존 서버만으로는 정상적인 서비스가 불가능하게 된다. 트래픽이 많은 최신 웹 사이트는 클라이언트의 수많은 동시 요청을 처리하고 텍스트, 이미지, 비디오 또는 애플리케이션 데이터 등을 빠르고 안정적인 방식으..

CS/Network 2023.07.04

[스프링] MVC, MVP, MVVM 디자인 패턴

MVVM을 이해하기 위해서는 MVC -> MVP -> MVVM 순서대로 아키텍처 패턴에 대한 이해가 필요하다. MVC 패턴 객체지향프로그래밍에서 MVC란 사용자 인터페이스를 성공적이며 효과적으로 데이터 모형에 관련 시키기 위한 방법론 또는 설계 방식중 하나로써, 목적 코드의 재사용에 유용한 것은 물론, 사용자 인터페이스와 응용프로그램 개발에 소요되는 시간을 현저하게 줄여주는 형식이라고 많은 개발자들이 평가하고 있다. Model, View, Controller의 약자로 User – View – Controller – Model – Controller – View User의 구조를 가지고 있다. MVC 패턴은 응용프로그램의 시각적 부분과 가 이면의 동작과 제어를 처리하는 부분(비즈니스 로직이라 한다)을 분리..

Programming/Spring 2023.07.03

[스프링] 디자인 패턴

디자인 패턴의 개요 여러 사람이 협업을 하며 프로그램을 개발 할 때 다른 사람이 작성한 코드나 기존의 코드를 이해하는 것은 어렵다. 이런 코드들은 유지 보수를 함에 있어서 새로운 기능을 추가하거나 최적화를 하기에 힘든 구조적인 결함을 가지고 있다. 이를 최소화하기 위해서 디자인 패턴은 등장했다. 특수한 경우의 프로그래머가 아니라면 프로그래밍을 하면서 만나는 문제가 지구상에서 유일한 문제일 경우는 거의 없기 때문에 앞서 이미 많은 수많은 오류들을 피하는 방법을 패턴화하게 된다면 좀더 버그가 발생하는 폭을 줄이고 수정하는데(발생하는 숫자가 아니라 예외를 찾는데 조금더 덜 시간을 사용하게 됨) 최소한의 시간을 들일 수 있게 된다. 즉, 디자인 패턴은 프로그램 등을 개발하는 중에 발생했던 문제점들을 정리 및 특..

Programming/Spring 2023.07.02
728x90
반응형