본문 바로가기

전체 글282

[고득점 Kit(해시)] 위장 (Swift, Python) 코딩테스트 연습 - 위장 programmers.co.kr 풀이 옷의 종류를 key로 하고 해당 종류에 몇 가지 의상이 있는지를 담아주는 사전을 하나 만든다. 그 후 종류별로 갖고 있는 의상의 개수에 +1을 해주어 서로 곱해주어 조합할 수 있는 경우의 수를 구해주면 된다. +1은 해당 종류의 의상을 입지 않았을 때를 의미한다. 이렇게 구한 값에 -1을 해주어 리턴하면 되는데 이는 모든 종류의 의상을 입지 않았을 때의 경우의 수를 제거해주는 것이다. 코드 [Swift] import Foundation func solution(_ clothes:[[String]]) -> Int { var clothesDict: [String: Int] = [:] // 의상의 종류를 key로 하는 dictionary var a.. 2022. 1. 24.
[DB - 데이터베이스 개론] Chapter 06. 관계 데이터 연산 목차 01. 관계 데이터 연산의 개념 이번 장에서는 데이터 모델의 연산에 대해서 알아보자. 연산은 원하는 데이터를 얻기 위해 릴레이션에 필요한 처리 요구를 수행하는 것으로, 데이터베이스 시스템의 구성 요소 중 데이터 언어의 역할을 한다. 대표적인 관계 데이터 연산으로 관계 대수와 관계 해석이 있다. 관계 대수와 관계 해석은 원하는 데이터를 얻기 위한 처리 절차를 얼마나 자세히 기술하느냐에서 큰 차이를 보인다. 관계 대수(relational algebra) : 데이터의 처리 과정을 순서대로 기술하는 절차 언어(procedural language) 관계 해석(relational calculus) : 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어(nonprocedural language) 데이터를 처.. 2022. 1. 23.
[고득점 Kit(해시)] 전화번호 목록 (Python) 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀이 입력받은 전화번호 목록을 먼저 정렬해주고 i-1번째 전화번호가 i번째 전화번호의 접두사인지를 체크해주면 된다. 코드 HTML 삽입 미리보기할 수 없는 소스 2022. 1. 22.
[DB - 데이터베이스 개론] Chapter 05. 관계 데이터 모델 목차 01. 관계 데이터 모델의 개념 1. 관계 데이터 모델의 기본 용어 일반적으로 관계 데이터 모델에서는 하나의 개체에 관한 데이터를 릴레이션(relation) 하나에 담아 데이터베이스에 저장한다. 아래 사진의 릴레이션의 예를 통해 관련 용어를 알아보자. 1.1 속성 (attribute) 릴레이션의 열을 의미한다. 각 속성은 서로 다른 이름을 이용해 구별한다. 릴레이션은 파일 관리 시스템에서의 파일, 속성은 해당 파일의 필드(field)에 대응하는 개념이다. 1.2 튜플 (tuple) 릴레이션의 행을 의미한다. 고객 개체의 인스턴스에 해당한다. 튜플은 파일 관리 시스템 관점에서 해당 파일의 레코드(record)에 대응하는 개념이다. 1.3 도메인 (domain) 속성 하나가 가질 수 있는 모든 값의 집.. 2022. 1. 21.
[고득점 Kit(해시)] 완주하지 못한 선수 (Python) 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 참여한 선수들을 사전에 추가한다. 동명이인이 있을 수 있으므로 참여한 선수의 이름을 key로 하고 value는 해당 이름을 카운트 한 값으로 설정한다. 그 후 완주한 선수들을 사전에서 찾아서 value를 하나씩 줄여준다. 마지막에 사전을 탐색하는데 value가 0이 아닌 선수가 완주하지 못한 선수이므로 해당 선수의 이름을 return 해주면 된다. 코드 HTML 삽입 미리보기할 수 없는 소스 2022. 1. 20.
[고득점 Kit(스택/큐)] 주식가격 (Python) 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 풀이 입력으로 주어진 prices를 차례대로 스택에 push한다. 스택에는 (가격, 스택에 push된 시간)과 같은 튜플 형태로 넣어줬다. 여기에서 시간은 인덱스와 같은 의미를 지닌다. 스택에 넣기 전에 스택의 top에 있는 주식의 가격과 비교한다. 현재 스택의 top에 있는 주식 가격보다 현재 주식의 가격이 낮을 경우에는 스택에서 해당 주식을 pop을 통해 제거한다. 제거하면서 answer 배열에 '현재 시간 - 스택에.. 2022. 1. 19.
[고득점 Kit(스택/큐)] 다리를 지나는 트럭 (Swift, Python) 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 풀이 입력으로 주어진 트럭들을 순서대로 bridgeQueue에 append한다. 현재 다리에 있는 모든 트럭의 무게를 합한 값에 지금 다리로 진입해야 하는 트럭의 무게가 합해졌을 때 제한 무게를 넘지 않는지 체크한다. 만약 넘지 않을 경우에는 다리에 트럭을 진입시키는데 이때 (트럭의 무게, 다리에 진입한 시간)의 형태로 bridgeQueue에 넣어줬다. 만약 무게 제한을 넘어설 경우에는 bridgeQueue에서 가장 먼저 들어온 트럭을.. 2022. 1. 18.
[DB] 트랜잭션(Transaction)이란? 목차 트랜잭션의 정의 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위를 의미한다. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다. 데이터베이스 연산은 SQL문으로 표현되므로 트랜잭션을 작업 수행에 필요한 SQL문들의 모임으로 이해해도 된다. 트랜잭션의 모든 명령문이 완벽하게 처리되거나 하나도 처리되지 않아야 데이터베이스는 모순이 없는 일관된 상태를 유지할 수 있다. 데이터베이스에 장애가 발생했을 때 복구작업을 수행하거나, 다수의 사용자가 동시에 사용할 수 있도록 작업을 하는 데 중요한 단위로 사용된다.. 2022. 1. 18.
[고득점 Kit(스택/큐)] 프린터 (Swift, Python) 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 풀이 총 3개의 스택/큐를 만들었다. 인쇄해야 하는 큐(a) : 인쇄해야 하는 문서들이 들어있는 큐 인쇄 순서를 담아두는 큐(b) : 우선순위에 따른 인쇄 순서를 담아두는 큐. 임시 pool(c) : b에서 우선순위에 밀려 다음으로 미뤄진 리스트를 임시로 저장하여 a에 넣어주기 위해 사용되는 큐 a는 입력으로 주어진 인쇄 리스트를 의미한다. 차례대로 앞에서부터 b에 담아주는데 만약 b에 가장 뒤쪽에 있는 문서에 비해 우선순위가 높은지 낮은지 체크한다. 만약 b에 있.. 2022. 1. 17.