전체 글

전체 글

    [JAVA] 객체(Object) & 캡슐화(Encapsulation)

    1. 3세대 언어의 탄생 프로그래밍 언어의 발전 역사를 살펴보면 세대를 관통하는 중요한 키워드가 바로 "코드의 재사용성"이다. 기능을 재사용하는 2세대 절차 지향적 언어가 나왔던 이유는 어제 구현한 기능을 오늘 다시 쓰려고 보니 처음부터 다시 구현해야 하는 귀찮음을 발견했기 때문이었다. 하지만 단순히 기능을 재사용하는 것보다 조금 더 복합적인 개념을 재사용할 수 있는 방법을 생각하게 되었고, 그렇게 3세대 언어인 "객체 지향적 언어(Object Oriented Programming)"이 탄생하게 되었다. 2. 객체란 객체는 클래스의 변수를 뜻한다. 즉 객체 지향 프로그래밍에서는 단순히 데이터를 저장할 구조체 혹은 기능을 단독적으로 재사용하는 것이 아니라 그 모든 것이 합쳐져 있는 클래스 자체를 통째로 재..

    [JAVA] 배열의 동적 할당(Dynamic Allocation)

    1. 동적할당과 정적할당 동적할당이란, 배열의 크기가 고정되어있지 않고 추가하면 늘어나고 삭제하면 줄어드는 형태를 말한다. 배열의 가장 큰 단점은 우리가 맨 처음부터 크기를 특정 지어야 한다는 것이다. 이때 지정된 크기 이상의 값을 넣을 때도 문제가 되고, 반대로 우리가 어디 인덱스가 비어있는지를 찾는 것 또한 문제가 된다. 이런 모든 문제는 배열의 크기가 고정, 즉 "정적 할당(Static Allocation)" 되어있기 때문에 발생한다.

    [JAVA] Call By Valeue(값에 의한 호출) & Call By Reference(참조에 의한 호출)

    1. Call By Value(값에 의한 호출) 값에 의한 호출은 파라미터로 넘어온 값이 실제 값이 아니라 실제 값으로 복사한 값으로 넘어오는 경우이다. 만약 파라미터의 데이터 타입이 기본형 데이터 타입일 경우에는 값에 의한 호출이 발생한다. public class CallBy { public static void main(String[] args) { // 값에 의한 호출 int num = 3; System.out.println(num); // 3 출력 callByValue(num); // 4 출력 System.out.println(num); // 3 출력 } public static void callByValue(int num) { num++; System.out.println(num); } } 3 ..

    [Python] 백준 2839번 : 설탕배달

    https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net [ 내 코드 ] n = int(input()) count = 0 while n >= 0: if n % 5 == 0: count += (n // 5) print(count) break n -= 3 count += 1 else: print(-1) 만약 n이 5의 배수면 봉지의 전체 개수는 n을 5로 나눈 몫이 되고 이 코드를 빠져나온다. 가령 n의 값이 10이었다면 10은 5의 배수이므로 count에 몫인 2를..

    [JAVA] 메서드(Method)

    1. 메서드 메서드란, 우리가 일종의 코드를 압축시킨 축약어를 만들어서 그 축약어를 적으면 미리 설정한 코드가 차례대로 실행되는 것이다. 예를 들어 어떤 프로그램의 단축키를 누르면 해당 단축키에 설정되어있는 기능이 실행되듯 우리가 그러한 단축키를 만들게 되는 것이다. 메서드는 선언과 구현으로 이루어진다. 메서드의 선언이란, 해당 메서드가 외부 클래스에서 접근 가능한지, static인지, 메서드가 종료될 때 그 메서드를 실행시킨 곳으로 어떤 데이터 타입의 값을 보내줄지, 이름은 무엇인지, 그 메서드를 실행시킬 때 외부에서 어떤 값을 보내줄지를 지정하는 것이다. 또한 해당 메서드를 선언하고 그 안에 그 메서드를 실행시켰을 때 실행할 코드를 우리가 구현하게 된다. // 메서드의 선언과 구현 접근 제한자 sta..

    [Python] 백준 1092번 : 배

    https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net [ 내 코드 ] n = int(input()) n_list = list(map(int, input().split())) m = int(input()) m_list = list(map(int, input().split())) n_list.sort(reverse=True) m_list.sort(reverse=True) print(n_list) print(m_list) count = 0..

    [Python] 백준 2012번 : 등수 매기기

    https://www.acmicpc.net/problem/2012 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net [ 내 코드 ] n = int(input()) real_list = [] expect_list = [] for i in range(n): real_list.append(i + 1) for i in range(n): expect_list.append(input()) expect_list.sort() sum = 0 for i in range(n): sum = sum + (int(real_list[i]) - ..

    [Python] 백준 1439번 : 뒤집기

    https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net [ 내 코드 ] num_list = list(input()) count = 0 for i in range(len(num_list)): if i == 0: first = num_list[i] elif i == 1: if first != num_list[1]: count += 1 else: if num_list[i] != num_list[i-1]: count += 1 if count == 1: pri..

    [Python] 백준 5585번 : 거스름돈

    https://www.acmicpc.net/problem/5585 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net [ 나의 답 ] value = int(input()) coin_list = [500, 100, 50, 10, 5, 1] count = 0 left_coin = 1000 - value for i in coin_list: num = left_coin // i count += num left_coin -= num * i print(count) [ 클린 코드] changes = 10..