Language

Language/Kotlin

[Kotlin] runBlocking을 사용해 코루틴 함수 호출하기

업무 중 다른 팀이 개발한 프로젝트를 라이브러리로 가져와 사용할 일이 있었다. 메서드를 사용하던 와중에 처음 보는 컴파일 에러를 발견했다.Suspend function 'suspend fun test()' can only be called from a coroutine or another suspend function. 호출한 메서드가 suspend 함수이기 때문에 코루틴이나 다른 suspend 함수 내에서만 호출 가능하다는 문구이다. suspend 함수란?코루틴에서 함수를 실행할 때 도중에 멈출 수 있음을 표시하기 위해 사용한다. 함수가 실행 중 멈추는 경우에 스레드를 점유하며 성능이 저하되는 현상을 방지하기 위해, suspend 함수에서는 함수가 멈춰있는 동안 해당 스레드를 다른 코루틴 프로세스가 점..

Language/Kotlin

코틀린 알아가기 (1)

클래스 프로퍼티 val을 사용해 프로퍼티를  선언하면 getter를 무조건 포함한다.var을 사용해 프로퍼티를 선언하면 gettter와 setter를 포함한다.class Car(val name: String, var position: Int = 0) 이 예제에서 name은 프로퍼티, 필드, getter, 생성자 파라미터의 역할을 한다. position을 캡슐화하기 위해 아래와 같이 setter를 private로 바꾼다.class Car(val name: String, var position: Int = 0) { var position: Int = position private set}  상수 사용하기private const val DEFAULT_POSITION: Int = 0class Car(va..

Language/C++

[BOJ/C++] 백준 12869 - 뮤탈리스크

https://www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 풀이 과정 scv는 최대 3개가 있을 수 있고, scv의 체력은 최대 60이다. 따라서 각 scv의 체력의 조합은 61의 3승이다. 약 20만의 경우의 수가 있으므로, 전부 탐색해도 큰 문제가 없이 풀 수 있다. D[a][b][c] = 체력의 조합이 (a, b, c) 일 때 모두 파괴하는 최소 공격 횟수 총 세 가지 SCV에 대해서 체력을 감소시킬 때는 3!의 경우의 수가 있으므로, 아래와 같이 점화식을 ..

Language/C++

[BOJ/C++] 백준 1495 - 기타리스트

https://www.acmicpc.net/problem/1495 1495번: 기타리스트 첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다. www.acmicpc.net 마지막곡을 연주할 때 k인 볼륨을 설정하는 것이 가능한지 ? 를 기준으로 문제를 풀 수 있게 다이나믹 프로그래밍 알고리즘을 적용해보았다. dp(n, k) = max(sol(n-1, k - v[n]),sol(n-1, k+v[n])) 코드는 위와 같다. 둘 중에 하나라도 가능하면 dp[n][k], 즉 k 크기의 볼륨으로 n번째 곡을 연주할 수 있으므로 첫 번째 곡..

Language/C++

[C++] STL Map 순회하기, 요소 검색하기, 내림차순 정렬하기

Map 순회하기 1. iterator 을 이용한 순회 // iterator를 사용하여 순회 for (auto it = myMap.begin(); it != myMap.end(); ++it) { std::cout

Language/C++

[C++] 스택(stack), 큐(queue), 데크(deque) 직접 구현하기

스택(stack) #include // 스택 클래스 정의 class Stack { private: static const int MAX_SIZE = 100; // 스택의 최대 크기 int arr[MAX_SIZE]; // 스택을 저장할 배열 int top; // 스택의 가장 위에 있는 요소의 인덱스 public: Stack() : top(-1) {} // 생성자, 스택 초기화 // 스택이 비어있는지 확인 bool isEmpty() { return (top == -1); } // 스택이 가득 찼는지 확인 bool isFull() { return (top == MAX_SIZE - 1); } // 스택에 요소 추가 void push(int value) { if (isFull()) { std::cout

Language/C++

[C++] 이분 탐색으로 lower_bound, upper_bound 구현하기

이분 탐색으로 lower_bound 구현하기 lower_bound는 어떤 수보다 크거나 같은 수가 처음 나오는 위치를 의미한다. 반대로, upper_bound는 어떤 수보다 큰 수가 처음 나오는 위치를 의미한다. vector v = {0, 1, 2, 3, 4, 5}; int target = 3; int left = 0, right = v.size() -1 ; while(left

Language/C++

[C++] 코딩테스트에 자주 나오는 문자열 처리 예제들

String 부분 문자열 substr https://modoocode.com/235 C++ 레퍼런스 - string 의 substr 함수 modoocode.com basic_string substr(size_type pos = 0, size_type count = npos) const; 첫 번째 인자는 시작 위치, 두 번째 인자는 부분 문자열의 길이를 의미한다. 인자를 하나만 넣게 되면, 자동으로 문자열의 마지막 위치까지 잘라서 리턴하게 된다. 소문자를 대문자로, 대문자를 소문자로 ! Transform 함수 https://artist-developer.tistory.com/28 [C++] transform 함수 안녕하세요. 개발자 김모씨입니다. C, C++ 탭을 새로 만들었습니다~~~~~~ 여기에는 실무..

Language/C++

[C++] 코딩 테스트에 자주 나오는 숫자 관련 연산 예제들

자료구조를 사용하지 않지만, 수학적 계산을 이용해 구하는 간단하고 다양한 예제들을 정리하려 한다. 양수, 음수에 대한 올림/내림/반올림 https://blockdmask.tistory.com/112 [C언어/C++] 올림, 내림, 반올림 (floor, ceil) 함수 안녕하세요 BlockDMask 입니다. 오늘은 올림, 내림 을 할수있는 ceil, floor 함수에 대해서 알아보고. floor 함수를 통해서 반올림을 하는 것 까지 보도록 하겠습니다. C의 함수들이 C++에 호환이 되어서 C blockdmask.tistory.com 이 분의 글을 참고하였다. 양수, 음수인 경우 사용법은 동일하다. #include #include int main(){ double n = 1.0124; cout

MINGYUM
'Language' 카테고리의 글 목록