목록분류 전체보기 (295)
거의 알고리즘 일기장
4796번 https://www.acmicpc.net/problem/4796 4796번: 캠핑 문제 등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다. 캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다. 강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까? 강산이는 조금 더 일반화해서 문제를 풀려고 한다. 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 www.acmicpc.net #include #include #include using namespace std; int L, P, V; int main() { ..
https://codeforces.com/problemset/problem/189/A Problem - 189A - Codeforces codeforces.com 풀이방법 시간은 1초, n,a,b,c는 최대 4000이다. 조건은 1. piece는 무조건 a or b or c 2. 최대로 자를수 있는 값을 구하라 완전탐색으로 할시 최악의 경우 ( a,b,c가 1, n이 4000일때 ) 4000! * 3일수 있다. 그러므로 완전탐색은 탈락이고 시간을 줄일수 있는 dp를 써보자. dp[value] : value일때 최대로 자를수 있는 개수 그리고 a, b, c를 하나씩 순서대로 밑의 조건대로 넣어보자. 1. value % piece (a or b or c) == 0 일때 dp[value] = max(dp[va..
https://codeforces.com/problemset/problem/492/B Problem - 492B - Codeforces codeforces.com 풀이방법 주어진 조건은 시간은 1초, n은 최대 1000, l은 최대 10^9 이다. n이 1000 밖에 안되므로 그냥 정렬해서 풀면 끝이다. slt sort가 어느정도의 시간이 걸리는지 정확히는 모르겠지만( 내 기억엔 O(nlogn)이었던걸로 기억함 ) 퀵소트의 최악의 경우인 O(n^2)이라도 시간은 충분하다. ㅎㅎ 전체코드 #include #include #include #include using namespace std; int N; long long L; vector a; void Input() { cin >> N >> L; long l..
시작하기에 앞서 앞서 쓴 멀트스레드의 기본 사용법에 대한 포스팅에 이런 글이 있었다. https://kunkunwoo.tistory.com/116 멀티스레딩 기본 사용법 필요성 요즘에는 cpu하나에 여러개의 코어가 달려있다. 이를 효율적으로 사용하기위해 나온 기법이 멀티스레딩이다. 멀티스레드란? 병렬처리 기법중 하나로 cpu안에 있는 여러개의 코어를 이용해서 더욱더 빠른 연.. kunkunwoo.tistory.com 이번에는 이 레이스 컨디션이 무엇인가? 와 해결방법에 대해 다뤄보겠다. 레이스 컨디션이란? 이 부분은 예제를 보면 쉽다. 예제를 알아보자 문제점 예제 #include #include #include #include #include using namespace std; int shared_me..
필요성 요즘에는 cpu하나에 여러개의 코어가 달려있다. 이를 효율적으로 사용하기위해 나온 기법이 멀티스레딩이다. 멀티스레드란? 병렬처리 기법중 하나로 cpu안에 있는 여러개의 코어를 이용해서 더욱더 빠른 연산을 하게하는 기법이다. 구조에 대해서는 밑의 그림을 보면 이해가 쉬울것이다. 위의 그림을 보면 이미 일을 처리하고 있던 main thread가 다른 스레드에게 일을 나눠주고 받는 형태를 볼수있다. 예를 들면 밑처럼 실행하고 받는다고 생각하면 된다. 사용법 ( 주석에 자세히 설명해둠 ) #include #include #include #include using namespace std; //서로 못건드리게 함 mutex mtx; //mutual exclusion int main() { //여러가지 일을..
지금까지 나는 class, struct로 정의해서 return하는 방식으로 여러개의 값을 리턴하는 방법을 사용했었는데, 강의를 보다가 엄청 편리해보이는 새로운 방식이 나와 소개해볼까 한다. 사용법 #include #include using namespace std; auto my_func() { return tuple(123, 456, 789); } int main() { //17버전 auto [a, b, c] = my_func(); cout
사용법 #include #include #include #include using namespace std; void goodbye(const string& s) { cout
파일입출력을 하다보면 파일의 임의 위치에 있는 값들을 받거나 쓰고 싶을 수있다. 이때 사용하는 방법이다. #include #include #include using namespace std; int main() { const string filename = "my_file.txt"; //make a file { ofstream ofs(filename); for (char i = 'a'; i
요즘 공부하고 집에 돌아오면 포스팅한 글중에 잘못푼게 있을까봐 한번씩 살펴보는게 습관이 됬다. 그리고 그때마다 후기도 한번씩 읽어보는데 요즘에 문제가 잘 안풀리는 느낌이여서 그런건지, 최근에 썼던 후기들이 다~ '난 빡대가린가..' 이런 슬픈 이야기만 있어서 눈물겨웠다. 나중에 고수가 되서 웃으면서 썼던 글들을 읽고싶다.히히
적이나 장애물을 부딛쳤을때 피격이벤트를 영상을 보고 따라 구현해봤다. 1. 먼저 가시랑 몬스터에 대한 태그, 레이어들을 설정하고 2. 가시랑 몬스터랑 맞닿아도 겹쳐지나가게 하고, 플레이어가 데미지를 입은 상태에서는 적과 닿아도 피격이벤트가 발생하지 않게 하기 위해서 ( 무적시간 ) project settings에서 아래와 같이 체크를 해제해준다. 3. 아래와 같이 스크립트에 이벤트 내용을 추가해준다. 추가 이벤트내용으로는 적에게 닿았을때 몸을 흐리게 만들고 약간의 시간동안 무적시간을 갖게 했다. void OnDamaged(Vector2 targetPos) { //player damaged gameObject.layer = 11; spriteRenderer.color = new Color(1, 1, 1, ..