Python(61)
-
[CS 지식] 객체 지향 프로그래밍(OOP) 개념 및 예제
객체 지향 프로그래밍(OOP) object-oriented programming 이번 포스팅에선 객체 지향 프로그래밍에 대해 알아보겠습니다. 개념과 함께 예제를 살펴볼 것이며, 언어는 python으로 진행하겠습니다. 📌 정의 먼제 객체에 대한 정의부터 내리겠습니다. 객체란? 쉽게 말해 하나의 존재입니다. 물리적으로 존재하든, 추상적으로 생각할 수 있든 자신의 속성을 가지고 다른 존재와 식별이 가능하면 객체라고 할 수 있습니다. 프로그래밍으로 따지면 변수도 객체가 될 수 있고, 함수도 객체가 될 수 있습니다. 또는 변수와 함수를 묶은 것도 객체가 될 수 있습니다. 가능한 모든 것들이 하나의 존재로 묶이기만 한다면 객체가 될 수 있습니다. 파이썬으로 예를 들면, 다음 것들이 모두 객체입니다. # 1 obje..
2022.06.26 -
[BOJ] #10816번: 숫자 카드 2
문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,0..
2022.06.22 -
[BOJ] #1920번: 수 찾기
문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다. 예제 입력 1 5 4 1 5 2 3 5 1 3 7 9 5 예제 출력 1 1 1 0 0 1 풀이 이진 탐색과 퀵정렬을 이용해서 풀었다. 둘의 ..
2022.06.22 -
[BOJ] #2108번: 통계학
문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 N개의 수가 주어졌을 때, 네 가지 기본 통계값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. 출력 첫째 줄에는 산술평균을 출력한다. 소수점 이하 ..
2022.06.21 -
[Algorithm] 이분 탐색(Binary Search) 개념 및 코드(python)
순서대로 나열되어 있는 배열이 있습니다. 이 배열에서 target 값을 찾으려 하는데, 배열 요소가 100만개라 모두 비교하면 시간이 많이 걸립니다. 이때 더 빠르게 target 값을 찾을 순 없을까요? 이 필요성을 채워주는 것이 이분 탐색 알고리즘입니다. 📌 이분 탐색 정의 이분 탐색은 정렬된 배열을 1/2씩 줄여서 타겟 값을 찾아나가는 알고리즘입니다. 이분 탐색의 프로세스는 다음과 같습니다. (1) 배열의 중간 값을 찾는다. (2) target 값과 중간 값을 비교하여 (low, same, high)큰지, 작은지, 같은지를 판단한다. (3) target이 작다면 중간 값 이전의 배열을, 크다면 중간 값 이후의 배열을 대상으로 다시 이분 탐색을 진행한다. (4) 만약 같다면, 중간 값이 바로 targe..
2022.06.20 -
[BOJ] #18879번: 좌표 압축
문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 제한 1 ≤ N ≤ 1,000,000 -109 ≤ Xi ≤ 109 예제 입력 1 5 2 4 -10 4 -9 예제 출력 1 2 3 0 3 1 풀이 pypy로 제출했다. 좌표 압축에 있어 하나하나 비교해..
2022.06.18