굥굥 DEV

    [백준][코틀린] 11050 이항 계수 1

    문제 내용 문제 자연수 \(N\)과 정수 \(K\)가 주어졌을 때 이항 계수 \(\binom{N}{K}\)를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) 출력 \(\binom{N}{K}\)를 출력한다. 예제 입력 예제 출력 5 2 10 문제 풀이 이항 계수 관련 설명은 (https://ko.wikipedia.org/wiki/이항_계수)를 참고하는 것이 좋을 것 같다! 아니면 다른 블로그에도 설명이 잘되어있다. n\(C\)k를 구하면 되는데, 정석대로 구하려면 \(\frac{N!}{K!(N-K)!}\) 로 계산해야겠지만 고등학교때 손계산 당시 자주 사용했던 방법으로 풀어보았다. 예를 들어 5\(C\)2 일..

    [백준][코틀린] 1259 팰린드롬수

    문제 내용 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. 출력 각 ..

    [백준][코틀린] 2231 분해합

    문제 내용 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. 반대로, 생성자가 여러 개인 자연수도 있을 수 있다. 자연수 N이 주어졌을 때, N의 가장 작은 생성자를 구해내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 출력 첫째 줄에 답을 출력한다. 생성자가 없는 경우에는 0을 출력한다. 예제 입력 예제 출력 216 198 문제 풀이 어떤 숫자의 분해 합은 어떤 숫자 ..

    인덱스

    인덱스

    인덱스 인덱스는 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조이다. 테이블 내의 1개의 컬럼 혹인 여러 개의 컬럼을 이용하여 생성될 수 있다. 🐶 장점 : 테이블을 조회하는 속도와 그에 따른 성능을 향상시킬 수 있음, 전반적인 시스템의 부하를 줄일 수 있음 🐱 단점 : 인덱스를 관리하기 위해 데이터베이스의 약 10%에 해당하는 저장공간이 필요함, 인덱스를 관리하기 위해 추가 작업이 필요함, 인덱스를 잘못 사용할 경우 오히려 승능이 저하되는 역효과 발생 가능 인덱스를 사용하는 것만큼이나 생성된 인덱스를 관리해주는 것도 중요하다. 그렇기 때문에 사용하지 않는 인덱스를 사용하면 좋은 경우 규모가 작지 않은 테이블 INSERT, UPDATE, DELETE가 자주 발생하지 않는 컬럼 J..

    관계 데이터 연산

    관계 데이터 연산

    관계 대수와 관계 해석의 차이? 관계 대수와 관계 해석은 원하는 결과를 얻기 위한 처리 절차를 얼마나 자세히 기술하느냐에서 큰 차이를 보인다. 관계 대수 : 원하는 결과를 얻기 위해 데이터의 처리 과정을 순서대로 기술하는 절차 언어 관계 해석 : 원하는 결과를 얻기 위해 처리를 원하는 데이터가 무엇인지만 기술하는 비절차 언어 관계 대수와 관계 해석을 공부하는 이유? 새로운 데이터 언어가 제안되면 해당 데이터 언어의 유용성을 검증해야 하는데 검증의 기준 역할을 하는 것이 관계 대수와 관계 해석임. 기술할 수 있는 모든 질의를 새로 제안된 데이터 언어로 기술할 수 있으면 관계적으로 완전하다고 하고 이를 통해 해당 언어가 어느정도 검증됐다고 판단함. 그중 관계 대수에 대해서 알아볼 예정이다. 관계 대수 관계 ..

    연결리스트

    연결리스트

    연결리스트는 차례로 연결된 노드를 표현해주는 자료구조이다. 배열과 달리 특정 인덱스를 상수 시간에 접근할 수 없다. linked list 장점 : Linked list의 길이를 동적으로 조절 가능, 데이터의 삽입과 삭제가 쉬움 linked list 단점 : 임의의 노드에 바로 접근할 수 없음, 다음 노드의 위치를 저장하기 위한 추가 공간이 필요함, Cache locality를 활용해 근접 데이터를 사전에 캐시에 저장하기가 어려움, 거꾸로 탐색하기 어려움 Runner 기법 Runner(부가 포인터라고도 함)는 연결리스트 문제에서 많이 활용되는 기법으로 연결리스트를 순회할 때 두 개의 포인터를 동시에 사용하는 것이다. 이때 한 포인터가 다른 포인터보다 앞서도록 하는데 앞선 포인터가 따라오는 포인터보다 항상 ..

    관계 데이터 모델

    관계 데이터 모델

    관계 데이터 모델의 기본 용어 1. 속성(attribute) : 릴레이션의 열, 해당 파일의 필드에 대응하는 개념 2. 튜플(tuple) : 릴레이션의 행, 해당 파일의 레코드에 대응하는 개념 3. 도메인(domain) : 모든 값의 집합을 해당 속성의 도메인 (Integer, Varchar(10)과 같이 값이 가질 수 있는 범위 및 집합) 4. 널 값 : 릴레이션에 있는 특정 튜플의 속성 값을 모르거나, 적합한 값이 없는 경우 null이라는 특별한 값을 사용할 수 있음 5. 차수 : 하나의 릴레이션에서 속성의 전체 개수, 모든 릴레이션은 최소 1 이상의 차수를 유지해야함, 일반적으로 자주 변하지 않는다는 정적인 특징 6. 카디널리티 : 하나의 릴레이션에서 튜플의 전체 개수, 일반적으로 자주 변한다는 동..

    운영체제란?

    운영체제란?

    왜 운영체제를 공부하는가? 거의 모든 코드가 운영체제 위에서 실행되므로 운영체제 작동방식에 대한 지식은 적절하고 효율적이며 효과적이며 안전한 프로그래밍에 중요하기 때문이다. 운영체제란 무엇인가? 컴퓨터의 하드웨어를 관리하는 소프트웨어다. 운영체제는 또한 응용 프로그램을 위한 기반을 제공하며 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행한다. 운영체제가 할 일 1. 사용자 관점 : 사용되는 인터페이스에 따라 달라진다. 한 사용자가 자원을 독점하도록 설계되었으며 목표는 사용자가 수행하는 작업을 최대화하는 것, 이러한 경우 운영체제는 대부분 사용의 용이성을 위해 설계되고 성능에 약간 신경을 쓰고 다양한 하드웨어와 소프트웨어 자원이 어떻게 공유되느냐의 자원의 이용에는 전혀 신경을 쓰지 않음 2. ..

    해시 테이블

    해시 테이블

    해시 테이블은 컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료구조이다. 해시 테이블의 시간 복잡도는 O(1)이다. 키와 값을 해시 테이블에 넣을 때 거치는 과정 키의 해시 코드를 계산 해시 코드를 이용하여 배열의 인덱스를 구함 배열의 각 인덱스에 키와 값으로 이루어진 연결 리스트가 존재 해시 함수의 두가지 성질 입력 원소가 해시 테이블 전체에 고루 저장되어 있어야 함 계산이 간단해야 함 ⭐️ 첫번째 성질이 중요: 이 성질을 잘 만족해야 서로 다른 두 원소가 한 주소를 놓고 충돌할 확률이 작아짐 해시 함수를 만드는 두 가지 방법 나누기 방법 : 해시 테이블 크기보다 큰 수를 해시 테이블 크기 범위에 들어오도록 수축시킴 h(x) = x mod m ⭐️ 여기서 m은 테이블의 크기..