💻 Development 408

[Java/OOP] 자바와 객체 지향 1/4 - 추상화

"스프링 입문을 위한 자바 객체 지향의 원리와 이해" 를 읽고 정리한 내용입니다. 객체 지향은 인간 지향이다 객체 지향의 개념은 "현실 세계처럼 프로그래밍할 수는 없을까?" 라는 고민 속에서 탄생했다. 0과 1의 컴퓨터에 맞춰 사고하던 방식을 버리고 현실 세계를 인지하는 방식으로 프로그램을 만들자는 것이다. 따라서 객체 지향은 직관적이다. 세상에 존재하는 모든 것은 사물, 즉 객체다. 각각의 사물은 고유하다. 사물은 속성을 갖는다. 사물은 행위를 한다. 저자는 사물을 하나하나 이해하기보다는 클래스로 분류해서 이해하는 것이 인간의 인지법이라고 한다. 박지성(object), 김연아(object)라는 존재는 사람이라는 분류에 속한다. 사람이라는 분류 안의 객체(object)들은 나이, 몸무게, 키 등의 속성(..

[백준/BOJ] 12015 - 가장 긴 증가하는 부분 수열 2

12015 - 가장 긴 증가하는 부분 수열 2 📌 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 📋 코드 import sys from bisect import bisect_left N = int(input()) num = list(map(int, input().split())) dp = [num[0]] for i in range(1, N): if dp[-1] < num[i]: dp.append(num[i]) else: pos = bisect_left(dp, num[i]) dp[pos] = num[i] print(len(d..

[백준/BOJ] 11053 - 가장 긴 증가하는 부분 수열

11053 - 가장 긴 증가하는 부분 수열 📌 문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 📋 코드 N = int(input()) arr = list(map(int, input().split())) dp = [1] * N for i in range(N): for j in range(i+1, N): if arr[i] < arr[j]: dp[j] = max(dp[j], dp[i] + 1) print(max(dp)) 💡 한마디 이 문제는 LIS (Longest Increasing Subsequence), 즉 최장 증가 수열로..

[백준/BOJ] 10815 - 숫자 카드

10815 - 숫자 카드 📌 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 📋 코드 def binary_search(target, left, right): while left target: right = mid - 1 else: left = mid + 1 return 0 N = int(input()) card = list(map(int, input().split())) M = int(input()) check_card = list(map(int, input().split())) card.sort() result = [] for num in..