CS/알고리즘 16

[알고리즘] Implementation (구현) - (2)

🔒 문제1 : 왕실의 나이트 행복 왕국의 왕실 정원은 체스판과 같은 8x8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서 있다. 나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다. 나이트는 말을 타고 있기 때문에 이동을 할 때는 1자 형태로만 이동할 수 있으며, 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기 이처럼 8x8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하시오. 이때 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는 a부터..

CS/알고리즘 2024.01.08

[알고리즘] Implementation (구현) - (1)

Implementation (구현) 1. 피지컬로 승부하기 코딩 테스트에서 구현이란 머리속에 있는 알고리즘을 소스코드로 바꾸는 과정 을 뜻한다. 어떤 문제를 풀든 소스코드를 작성하는 과정이 필수이며, 구현 문제 유형은 모든 코딩 테스트 문제 유형을 포함하는 개념으로 볼 수 있다. 1) Problem - Thinking - Solution 흔히 구현 유형의 문제는 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제 를 뜻한다. 생각해 낸 문제 풀이를 우리가 원하는 프로그래밍 언어로 정확히 구현해 내야하고, 이를 위해서는 프로그래밍 언어의 문법을 정확히 알고 있어야하고 문제의 요구사항에 어긋나지 않는 답안 코드를 실수없이 작성 해야 한다. 구현하기 어려운 문제 알고리즘은 간단한데 코드가 지나칠 만큼 ..

CS/알고리즘 2024.01.06

[알고리즘] Greedy (탐욕법) - (2)

🔒 문제1 : 큰 수의 법칙 '큰 수의 법칙'은 일반적으로 통계 분야에서 다루어지는 내용이지만 동빈이는 본인만의 방식으로 다르게 사용하고 있다. 동빈이의 큰 수의 법칙은 다양한 수로 이루어진 배열이 있을 때 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙이다. 단, 배열의 특정한 인덱스(번호)에 해당하는 수가 연속해서 K번을 초과해서 더해질 수 없는 것이 이 법칙의 특징이다. 에를 들어 순서대로 2,4,5,4,6으로 이루어진 배열이 있을 때 M이 8이고, K가 3이라고 가정하자. 이 경우 특정한 인덱스의 수가 연속해서 세 번까지만 더해질 수 있으므로 큰 수의 법칙에 따른 결과는 6+6+6+5+6+6+6+5인 46이 된다. 단, 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른..

CS/알고리즘 2024.01.05

[알고리즘] Greedy (탐욕법) - (1)

Greedy (탐욕법) 1. 탐욕법 (Greedy) 탐욕 : 현재 상황에서 가장 좋아보이는 것만을 선택하는 알고리즘 -> 매 순간 가장 좋아 보이는 것 을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 사전에 외우고 있지 않아도 풀 수 있을 가능성이 높은 문제 유형 예외) 다익스트라 알고리즘 - 암기가 필요 그리디 알고리즘의 경우 많은 유형을 접해보고 문제를 풀어보며 훈련해야함 => 창의력 즉, 문제를 풀기위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구함 => 단순히 현재 상황에서 가장 좋아보이는 것만을 선택해도 문제를 출 수 있는지를 파악할 수 있어야 함 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘임 => 문제에서 가장 큰 순서대로 혹은 가장 작은 순서대로 ..

CS/알고리즘 2024.01.04

알고리즘 성능 평가

1. 복잡도(Complexity) 1) 복잡도는 알고리즘의 성능을 나타내는 척도 시간 복잡도 : 특정한 크기의 입력에 대하여 알고리즈므이 수행 시간 분석 공간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석 2) 동일한 기능을 수행하는 알고리즘이 있다며느 일반적으로 복잡도가 낮을수록 좋은 알고리즘 Q. 코드가 복잡하다 ≠ 복잡도 ⇒ 복잡도는 함수의 성능에 관련된 것 3) 시간 복잡도가 높다는 것은 알고리즘의 실행 속도가 느리다 (수행시간 오래걸림) 4) 공간 복잡도가 높다는 것은 많은 메모리가 필요하다는 것 ⇒ 기능적으로는 복잡도가 낮을 수록 좋은 알고리즘 2. 복잡도 표기법 1) 빅오 표기법 가장 빠르게 증가하는 항 만을 고려하는 표기법 ⇒ 함수의 상한만을 나타내게 됨 ex) 3N^..

CS/알고리즘 2023.02.10

코딩 테스트 개요 및 출제 경향

나동빈님 이코테 보면서 내가 보려고 작성한 글 😊 코딩 테스트 기업/기관에서 직원이나 연수생을 선발하기 위한 목적으로 시행되는 일종의 문제 풀이 시험 공개 채용을 하는 기업에서는 코딩 테스트 주로 이용 문제 해결 역량 평가 가능 채점 시스템을 통해 응시자 수 줄일 수 있음(대기업) 코딩 테스트 유형 온라인 코딩 테스트 인터넷을 활용해 프로그래밍 역량을 평가하여 응시자 선별 대체로 타인과 문제 풀이를 공유하지 않는 선에서 인터넷 검색 허용 오프라인 코딩 테스트 시험장에 직접 방문하여 침 인터넷 검색이 허용되지 않고, 회사에서 제공하는 컴퓨터 환경 이용해야 함 ⇒ 보통 1차는 온라인 2차는 오프라인/면접 온라인 저지(Online Judge) 프로그래밍 대회나 코딩 테스트에서 나올 법한 문제를 시험해보는 온라..

CS/알고리즘 2023.01.09