profile
차근차근 하나씩

[Java] 클래스와 인스턴스 그리고 객체

메소드화 프로그래밍의 기본은 중복을 제거하는 것이다. 중복되는 로직을 메소드로 만들면 코드의 양을 줄일 수 있고, 문제가 생겼을 때 원인을 더 쉽게 찾을 수 있다. 객체화 클래스는 연관되어 있는 변수와 메소드의 집합이다. => 설계도 인스턴스 => 제품 객체: 클래스가 인스턴스가 된 것 보통 인스턴스: 구체적인 코드 상에서 나타나는 객체 객체: 로직을 설계할 때 나타나는 인스턴스. 또는 클래스, 인스턴스의 구분 없이 포괄적으로 부르는 말. 변수: 상태(state) 메소드: 행동(behave) 하나의 클래스를 바탕으로 서로 다른 상태를 가진 인스턴스를 만들면 서로 다른 행동을 하게 된다. 재활용성 -> 하나의 클래스가 여러 개의 인스턴스가 될 수 있는 점

2021년 7월 5일
·
0개의 댓글
·

[Java] 객체 지향 프로그래밍

객체 지향 프로그래밍(Object-Oriented Programming) 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임. 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것. 이 객체들을 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것 => 객체 지향 프로그래밍 객체 지향 프로그래밍의 시작 -> 객체가 무엇인가? 이해하기 추상화 복잡함 속에서 필요한 관점만을 추출하는 행위 지하철 노선도 -> 디자인의 추상화 프로그램 만들기 -> 소프트웨어의 추상화 객체지향 프로그래밍은 현실을 더 잘 반영하기 위한 노력의 산물이다. -> 단순한 문법으로 객체를 만드는 것이 아니라 고도의 추상화 능력이 필요하다. 부품화 모든 기능이 다 있는 초창기 컴퓨터 => 모니터 + 키보드 + 본체 (분리) 문제 발생 시 해당 문제가 어디에서 발생한 것인지 파악하고 해결하기 쉬워진다. 더 좋은 부품을 선택할 수 있다. 객체 지향은 부품화의 정점이다.

2021년 7월 5일
·
0개의 댓글
·
post-thumbnail

[Programmers] 체육복

문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를 작성해주세요. 제한사항 전체 학생의 수는 2명 이상 30명 이하입니다. 체육복을 도난당한 학생의 수는 1명 이상 n명 이하이고 중복되는 번호는 없습니다. 여벌의 체육복

2021년 7월 5일
·
0개의 댓글
·
post-thumbnail

[Programmers] 전화번호 목록

문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예제 | phone_book | return | |-|-| |["119", "97674223", "1195524421"] |false| |["123","456","789"

2021년 7월 5일
·
0개의 댓글
·
post-thumbnail

[Programmers] 모의고사

문제 설명 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 조건 시험은 최대 10,000 문제로 구성되어있습니다. 문제의 정답은 1, 2, 3, 4, 5중 하나입니다. 가장 높은 점수를 받은 사

2021년 6월 16일
·
0개의 댓글
·
post-thumbnail

[BOJ] 3053 택시 기하학

문제 19세기 독일 수학자 헤르만 민코프스키는 비유클리드 기하학 중 택시 기하학을 고안했다. 택시 기하학에서 두 점 T1(x1,y1), T2(x2,y2) 사이의 거리는 다음과 같이 구할 수 있다. D(T1,T2) = |x1-x2| + |y1-y2| 두 점 사이의 거리를 제외한 나머지 정의는 유클리드 기하학에서의 정의와 같다. 따라서 택시 기하학에서 원의 정의는 유클리드 기하학에서 원의 정의와 같다. 원: 평면 상의 어떤 점에서 거리가 일정한 점들의 집합 반지름 R이 주어졌을 때, 유클리드 기하학에서 원의 넓이와, 택시 기하학에서 원의 넓이를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 반지름 R이 주어진다. R은 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. 예제 입력 1 >

2021년 6월 16일
·
0개의 댓글
·
post-thumbnail

[BOJ] 1978 소수 찾기

문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 예제 입력 1 >4 1 3 5 7 예제 출력 1 >3 풀이 해당 숫자 n이 소수인지 검사할 때 2부터 n의 제곱근까지 나누어보면서 검사한다. 코드

2021년 6월 15일
·
0개의 댓글
·
post-thumbnail

[BOJ] 4948 베르트랑 공준

문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) 자연수 n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하는 한 줄로 이루어져 있다. 입력의 마지막에는 0이 주어진다. 출력 각 테스트 케이스에 대해서, n보다 크고, 2n보다 작거나 같은 소수의 개수를 출력한다. 제한 1 ≤ n ≤ 123,456 예제 입력 1 >1 10 13 100 1000 10

2021년 6월 15일
·
0개의 댓글
·
post-thumbnail

[Programmers] K번째 수

문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. array의 각 원소는 1 이상 100 이하입니다. commands의 길이는 1 이상 50 이하입니다. commands의 각 원소는 길이

2021년 6월 8일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 322 Coin Change

Description You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money. Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1. You may assume that you have an infinite number of each kind of coin. Example 1: >Input: coins = [1,2,5], amount = 11 Output: 3 Explanation: 11 = 5 + 5 + 1 Example 2: >

2021년 6월 7일
·
0개의 댓글
·
post-thumbnail

[BOJ] 11047 동전 0

문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) 출력 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. 예제 입력 1 >10 4200 1 5 10 50 100 500 1000 5000 10000 50000 예제 출력 1 >6 예제 입력 2 >10 4790 1 5 10 50 100 500 1000 5000 10000 50000 예제 출력 2 >12 풀이 동전을 오름

2021년 6월 5일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 55 Jump Game

Description Given an array of non-negative integers nums, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if you are able to reach the last index. Example 1: >Input: nums = [2,3,1,1,4] Output: true Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index. Example 2: >Input: nums = [3,2,1,0,4] Output: false Explanation: You will always arrive at index 3 no matter

2021년 6월 5일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 605 Can Place Flowers

Description You have a long flowerbed in which some of the plots are planted, and some are not. However, flowers cannot be planted in adjacent plots. Given an integer array flowerbed containing 0's and 1's, where 0 means empty and 1 means not empty, and an integer n, return if n new flowers can be planted in the flowerbed without violating the no-adjacent-flowers rule. Example 1: >Input: flowerbed = [1,0,0,0,1], n = 1 Output: true Example 2: >Input: flowerbed = [1,0,0,0,1], n = 2 Ou

2021년 6월 4일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 289 Game of Life

Description According to Wikipedia's article: "The Game of Life, also known simply as Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970." The board is made up of an m x n grid of cells, where each cell has an initial state: live (represented by a 1) or dead (represented by a 0). Each cell interacts with its eight neighbors (horizontal, vertical, diagonal) using the following four rules (taken from the above Wikipedia article): A

2021년 5월 28일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 38 Count and Say

Description The count-and-say sequence is a sequence of digit strings defined by the recursive formula: countAndSay(1) = "1" countAndSay(n) is the way you would "say" the digit string from countAndSay(n-1), which is then converted into a different digit string. To determine how you "say" a digit string, split it into the minimal number of groups so that each group is a contiguous section all of the same character. Then for each group, say the number of characters, then say

2021년 5월 28일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 48 Rotate Image

Description You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise). You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation. Example 1: >Input: matrix = [[1,2,3],[4,5,6],[7,8,9]] Output: [[7,4,1],[8,5,2],[9,6,3]] Example 2: ![](https://images.ve

2021년 5월 28일
·
0개의 댓글
·
post-thumbnail

[CodeUp] C언어 기초 100제 (1091~1099) - Java

✔ 1091 ✔ 1092 > 최소공배수를 구하는 문제. 세 수의 모든 배수가 될 때까지 날짜를 증가시켰다. ✔ 1093 ✔ 1094 > 저장된 배열만 거꾸로 출력시켰다. ✔ 1095 > 최소값을 찾는 문제. 배열의 처음부터 끝까지 돌면서 최소값을 찾는다. ✔ 1096 > 추가로 입력받은 좌표만 1로 바꾸어 주고, 이차원배열의 모든 값을 출력시켰다. ✔ 1097 > 추가로 입력받은 좌표값의 x행과 y열을 반대 값으로 바꿔준 뒤, 배열의 모든 값을 출력시켰다. ✔ 1098 > 방향이 가로일 경우 오른쪽으로 l만큼 증가시키면서 값을 1로 바꾸었다. 방향이 세로일 경우 아래쪽으로 l만큼 증가하면서 값을 1로 바꾸었다. 마지막은 배열의 모든 값을 출력시켰다. ✔ 1099 📝코드업 기초 100제를 마치며 > 기초 문제임

2021년 5월 28일
·
0개의 댓글
·
post-thumbnail

[CodeUp] C언어 기초 100제 (1081~1090) - Java

✔ 1081 ✔ 1082 ✔ 1083 ✔ 1084 > ✔ 1085 > 소수점 두 번째 자리에서 반올림 한 MB 단위로 출력한다. 8 (2^3) bit = 1Byte 1024 (2^10) Byte = 1KB 1024 (2^10) KB = 1MB > 총 2^23을 나눠준 뒤 String.format을 사용하여 한 자리까지 출력시킨다. ✔ 1086 > 가로, 세로, 비트 수를 다 곱해서 소수점 두 자리 까지 MB단위로 출력한다. ✔ 1087 ✔ 1088 ✔ 1089 ✔ 1090 > 수가 커질 경우 return의 제한 범위를 넘을 수 있기 때문에 자료형을 long으로 했다.

2021년 5월 28일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 70 Climbing Stairs

Description You are climbing a staircase. It takes n steps to reach the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? Example 1: >Input: n = 2 Output: 2 Explanation: There are two ways to climb to the top. 1 step + 1 step 2 steps Example 2: > Input: n = 3 Output: 3 Explanation: There are three ways to climb to the top. 1 step + 1 step + 1 step 1 step + 2 steps 2 steps + 1 step Constraints: 1 <= n <= 45 <

2021년 5월 21일
·
0개의 댓글
·
post-thumbnail

[LeetCode] 704 Binary Search

Description Given an array of integers nums which is sorted in ascending order, and an integer target, write a function to search target in nums. If target exists, then return its index. Otherwise, return -1. You must write an algorithm with O(log n) runtime complexity. Example 1: > Input: nums = [-1,0,3,5,9,12], target = 9 Output: 4 Explanation: 9 exists in nums and its index is 4 Example 2: > Input: nums = [-1,0,3,5,9,12], target = 2 Output: -1 Explanation: 2 does not exist in nums

2021년 5월 21일
·
0개의 댓글
·