우주먼지
고득점 Kit - Stack & Queue (다리를 지나는 트럭)
Algorithm 풀이/Programmers 2023. 3. 30. 18:22

💡 문제 파악 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다. 예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다. 경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭 0 [] [] [7,4,5,6] 1~2 [] [7] [4,5,6] 3 [7] [4] [5,6] 4 [7] [4..

Dynamic Programming (동적 계획법 & DP)
Data Architect/Algorithm 2023. 3. 30. 12:16

💡 Dynamic Programming 자료구조의 동적할당 (Dynamic Allocation)에서 '동적'은 프로그램이 실행되는 도중에 실행에 필요한 메모리를 할당하는 기법이다. 그러나, 알고리즘의 동적 계획법에서의 '동적'은 별 뜻이 없고 그냥 '기억하기'라고 생각하면 편하다. 동적 프로그래밍에서의 '프로그래밍'은 테이블을 만든다는 뜻이다. 쉽게 말해, 이전에 구한 값을 기반으로 규칙성을 파악하여 다음 값을 구하는 것이라고 생각하면 된다. 알고리즘 설계 기법(패러다임) 중 하나이며, 하위 문제의 최적해를 적절히 사용하여 상위 문제를 해결함으로써, 불필요한 계산을 줄일 수 있다. DP 알고리즘 기법이란? DP 알고리즘 기법은 이미 계산된 결과(하위 문제)는 별도의 메모리 영역에 저장하여, 다시 계산하지..

article thumbnail
마이다스 아이티 AI 면접 (개발 분야)
취업 2023. 3. 30. 04:30

💡 AI 면접 진행 순서 마이다스 아이티 공채 개발 분야 백엔드 파트 개발자 검사 전형을 분석한다. 오픈채팅방 (필수로 들어오라는 요청) 2023.03.30 오전에 채팅방 입장 역량검사 유효기간 2023.04.05 개발자 구현능력 검사 유효기간 2023.04.05 코딩테스트 응시일 2023.04.01 인성검사 AI 면접 개발 구현능력 & 개발자 역량 검사 (역량 분석 게임) 코딩테스트 심층 면접 (인성 기반) 위의 모든 상황은 녹화 & 소리 녹음이 되며 마이크 & 캠 필수 참조 - 허니유 유튜브 - AI 면접 참조 - 튜토리얼 인성 검사 일반적인 인성검사와 비슷하다. 서류 전형 합격 시 사전질문 링크가 오는데 꼭 제출 하도록 하자. AI 면접 공통적인 항목의 질문 자기소개 본인의 장&단점 직무 지원 동기..

Extention Function
Languages/Kotlin 2023. 3. 29. 05:19

💡 Extention Function 클래스에 상속하거나 디자인 패턴을 사용하지 않고 새로운 기능으로 클래스를 확장할 수 있는 기능이다. 이때, 추가적인 메서드를 구현하면 이를 확장 함수, 추가적인 프로퍼티면 확장 프로퍼티이다. 언제 확장 함수가 필요할까? 자신이 만든 클래스의 경우 새로운 함수가 필요하면 그냥 추가하면 된다. 하지만 외부 라이브러리를 사용할때는 함수를 추가하기가 어렵거나 변경이 어렵다. 이 때 원하는 새로운 함수를 자유롭게 만들수 있는 기능이다. 즉, 기존 클래스에 메서드를 추가하는 것이며, 확장 함수는 static 메서드이다. 기본 구조 Receiver Type 확장의 대상이 될 클래스 Receiver Object 확장 함수의 내부 구현 시 this 키워드를 사용하여 Receiver ..

Kotlin Controll Flow
Languages/Kotlin 2023. 3. 29. 05:18

💡 if-else 문 if 문이 '식'으로 사용되는 경우 값을 반환한다. if '식'의 경우 반다시 else를 동반해야 하지 않으면 컴파일 에러가 난다. // a가 큰경우 max에 a를 대입, 아니면 b 대입 // 상항연산자와 구조가 동일하다 val max = if (a > b) a else b if '식'의 branches들이 블록을 가질 수 있다. { ... } 블록의 마지막 구문이 반환값이 된다. fun if_else_식() { var a = 5 var b = 4 val max = if (a > b) { print("Choose a") a // 블록의 마지막 구문인 a가 반환값이 된다 } else { print("Choose b") b // 블록의 마지막 구문인 b가 반환값이 된다 } } 그리고 코..

[Operator Overloading] 이항 & 단항 산술 연산자 오버로딩
Languages/Kotlin 2023. 3. 29. 03:06

💡 Operator Overloading 코틀린은 특정 연산자의 역할을 함수로 정의할 수 있다. 연산자 오버로딩을 할때 operator라는 키워드를 사용하며 이미 정의된 함수를 새롭게 정의하면 된다. 이항 산술 연산 오버로딩 코틀린은 +,- 같은 산술 연산자를 오버로딩해서 사용 가능하다. 객체끼리 더하거나 뺄 때, 원하는 동작을 함수안에 구현하면 연산자를 통해 표현이 가능하다. 코틀린은 언어에서 미리 정해둔 연산자만 오버로딩할 수 있기 떄문에, 다른 언어와 비교해서 오버로딩 연산자를 정의하고 사용하는 것이 더 쉽고 편리하다. 식함수 이름 a * b times a / b div a % b mod (version 1.1 이상부터는 rem) a + b plus a - b minus 예시 두 객체를 더하는 확장..

[Operator Overloading] 복합 대입 & 비교 연산자 오버로딩
Languages/Kotlin 2023. 3. 29. 03:06

💡 복합 대입 & 비교 연산자 오버로딩 코틀린은 특정 연산자의 역할을 함수로 정의할 수 있다. 연산자 오버로딩을 할때 operator라는 키워드를 사용하며 이미 정의된 함수를 새롭게 정의하면 된다. 복합 대입 연산자 오버로딩 "+=", "-=" 등의 연산자를 복합 대입 연산자라고 하며, "+" 대응 함수인 plus와 같은 연산자를 오버로딩하면 코틀린은 그와 관련된 연산자인 "+=" 도 자동으로 구현해준다. var point = Point(1, 2) point += Point(3, 4) // point = point + Point(3, 4)와 동일하다 // 결과값 Point(x=4, x=6) 비교연산자 오버로딩 - 동등성 연산자 : equels 코틀린에선 모든 객체에 비교 연산을 수행하는 경우, equal..

검색 태그