본문 바로가기

전체 글

(90)
코틀린 공부 이야기 - 4주차 일급함수 (First-Class Function): 함수를 값(객체)처럼 다룰 수 있음 일급함수 특징 객체로 취급 가능 다른 함수의 인자로 넘길 수 있음 return 값으로 받을 수 있음 고차함수 (Higher-Order Function): 함수를 인자 / 반환값으로 다룰 수 있는 함수 다른 함수를 인자로 쓸 경우, 함수 이름 앞에 :: 를 써 줘야 함 람다 함수 (lambda function): 람다식 표현으로 작성한 함수, 그 자체가 고차함수이므로 별도의 연산자 없이 다룰 수 있음, 마지막 줄을 반환 함수 자료형 = { 인자 -> 수행할 연산 } 스코프함수: 함수형 언어의 특징을 조금 더 편리하게 사용하게 하기 위해서 제공 apply 인스턴스를 새로 생성하고 특정 변수에 할당하기 전에 초기화 작업 모..
코틀린 공부 이야기 - 3주차 객체지향 (Object-Oriented Programming) 객체지향의 장점: 모듈화, 디버깅, 확장성, 코드 재사용성 객체지향의 단점: 느린 속도, 설계에 많은 시간 소요 객체지향의 특성 캡슐화 (Encapsulation): 객체를 캡슐로 → 내부를 보호하고 볼 수 없게 함 상속 (Inheritance): 슈퍼클래스에 만들어진 필드와 메소드를 물려 받음 → 코드 중복 작성 방지 다형성 (Polymorphism): 같은 이름의 메소드가 다르게 구현 (오버라이딩, 오버로딩 등) 객체 객체 (Object): 속성 (Attribute)과 메서드 (Method)로 구성됨 속성 (Attribute): 객체의 상태나 특성을 정의 (데이터) 메서드 (Method): 객체의 동작을 정의 클래스 (Class): 객체를..
코틀린 공부 이야기 - 2주차 변수 val: 불변 변수. 값을 재할당 할 수 없음 (컴파일 에러) var: 가변 변수. 값을 재할당 할 수 있음 val은 c언어의 const 변수라고 생각할 수 있을 것 같다. 자료형 Integer, Long, Float 등 c언어와 비슷함 // 대신 첫문자 대문자로 쓰기... 소수를 변수값으로 저장할 때 자료형을 지정해 주지 않으면 Double형으로 추론 Float로 저장하려면? → f를 값 끝에 붙임 * 변수값을 $ { }으로 넣어 줄 수 있음 nullable type null 할당을 허용하려면 nullable modifier ‘?’를 통해 지정함 if문 c언어와 크게 차이점은 없음 if 조건문 block의 마지막 값을 반환해 변수에 할당 가능 when 조건문 c언어의 switch문과 유사 if 조..
[백준/c++] BOJ 15990 - 1, 2, 3 더하기 5 https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. www.acmicpc.net 문제 설명 정수 n을 1, 2, 3의 합으로 나타낸다. 단, 같은 수를 두 번 이상 연속해서 사용하면 안 된다. 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다. n (1 n; while (n--) { cin >> m; for (int i = 4; i
[백준/c++] BOJ 2670 - 연속부분최대곱 https://www.acmicpc.net/problem/2670 2670번: 연속부분최대곱 첫째 줄은 나열된 양의 실수들의 개수 N이 주어지고, 그 다음 줄부터 N개의 수가 한 줄에 하나씩 들어 있다. N은 10,000 이하의 자연수이다. 실수는 소수점 첫째자리까지 주어지며, 0.0보다 크거나 www.acmicpc.net 문제 설명 N개의 실수가 있을 때, 한 개 이상의 연속된 수들의 곱이 최대가 되는 부분을 찾아, 그 곱을 출력한다. N은 10000 이하의 자연수이며, 실수는 0.0보다 크거나 같고, 9.9보다 작거나 같다. 해결 dp[n] : n번까지의 연속곱의 최대곱 dp[1] = arr[1] dp[2] = arr[2] * dp[1] || arr[2] ... dp[n] = arr[n] * dp[n..
[백준/c++] BOJ 9461 - 파도반 수열 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 문제 설명 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 나선에서 가장 긴 변의 길이를 k라고 했을 때, 그 변에 길이가 k인 정삼각형을 추가한다. P(N)은 나선에 있는 정삼각형의 변의 길이이다. N이 주어졌을 때, P(N)을 구한다. (1 t; for (int i = 0; i > n; for (int j = 6; j
[백준/c++] BOJ 1003 - 피보나치 함수 https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 문제 설명 다음 소스는 N번째 피보나치 수를 구하는 c++ 함수이다. int fibonacci(int n) { if (n == 0) { printf("0"); return 0; } else if (n == 1) { printf("1"); return 1; } else { return fibonacci(n‐1) + fibonacci(n‐2); } } fibonacci(N)을 호출했을 때, 0과 1이 각각 몇 번 출력되는지 구한다. 해결 a. n = 0 0: 1, 1: 0 b. n == 1 0: ..
[백준/c++] BOJ 11048 - 이동하기 https://www.acmicpc.net/problem/11048 11048번: 이동하기 준규는 N×M 크기의 미로에 갇혀있다. 미로는 1×1크기의 방으로 나누어져 있고, 각 방에는 사탕이 놓여져 있다. 미로의 가장 왼쪽 윗 방은 (1, 1)이고, 가장 오른쪽 아랫 방은 (N, M)이다. 준규는 www.acmicpc.net 문제 설명 NxM 크기의 미로의 각 방에 사탕이 놓여져 있다. 현재 (1, 1)에 있고, (N, M)으로 이동하려고 한다. 오른쪽, 아래쪽, 대각선 아래 오른쪽으로 이동할 수 있고, 각 방을 방문할 때마다 방에 놓여져 있는 사탕을 모두 가져갈 수 있다. (N, M)으로 이동할 때, 가져올 수 있는 사탕 개수의 최댓값을 구한다. N, M (1 n >> m; for (int i = 1;..