일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백트래킹
- binary search
- C++
- 모두를 위한 딥러닝
- Java
- 벤쿠버
- STL
- 머신러닝
- dfs
- 파이썬
- 라인플러스
- 릿코드
- 라인
- 백준
- C/C++
- BFS
- DP
- 프로그래머스
- spring
- Spring Framework
- 알고리즘
- Python
- leetcode
- 스프링 프레임워크
- 딥러닝
- 시애틀
- jvm
- 다이나믹프로그래밍
- 프로그래밍언어론
- 스타벅스
- Today
- Total
케이스윔의 개발 블로그
문제세번의 다트 게임을 통해 얻을 수 있는 점수를 계산 하시오. 총 3번의 기회가 있고 점수와 함께 제공되는 보너스와 옵션을 고려해야합니다.문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/17682) 풀이상당히 문제가 길지만 그 만큼 조건이 많아서 각 조건들을 놓치지 않으면 해결할 수 있는 문제입니다. 처음에 입력이 string으로 들어오는데 3번의 점수로 나누어서 입력을 받을 수 있어야 하고, 보너스 계산은 쉽지만 옵션은 앞 점수까지도 고려해야합니다. 각 단계의 점수를 저장할 배열 num[3]과 스타상과 아차상을 저장할 bonus[3] 배열을 만들었습니다. S, D, T가 들어왔을 때는 각 점수에 바로 계산을 해서 num에 저장하면 되..
Garbage Collection: 더이상 사용하지 않는(참조되지 않는) 메모리를 해제하는 것을 말합니다. Garbage Collection 은 운영체제에서 다룰 수 있고, PL에서도 다룰 수 있고, 컴파일러에서도 다룰 수 있습니다. 어떻게 참조하지 않는 메모리를 해제해줄 수 있을지, 즉 어떻게 구현을 할 수 있는지 알아보겠습니다. 구현할 수 있는 방법은 크게 4가지가 있습니다. 1. Automatic reference counting(ARC) 참조의 개수를 자동으로 세어주는 것입니다. =가 할당될 때마다 오버로딩해서 count를 세어줍니다. =의 왼쪽, 오른쪽이 포인터인지, 사용이 되는지 table을 만들어서 어떤 포인터들이 사용되고 있는지 파악을 하고 사용되지 않을 때(0이 될 때) 해제를 시키도록 ..
Error: 컴파일 시 문법적인 오류나 런타임 시 NullPointer 참조와 같은 오류로 프로세스에 문제를 일으켜 프로세스를 종료시킬 수 있는 경우를 말합니다.(PL에서는 Unchecked Exception이라고도 합니다.)Exception: 프로그램 동작 도중에 예기치 않은 이상 상태가 발생하여서 수행 중인 프로그램이 영향을 받는 경우를 말합니다.(PL에서는 checked Exception이라고도 합니다.) Exception handling은 예외발생으로 인해 실행중인 프로그램이 비정상적으로 종료하는 것을 막고 정상적인 실행을 할 수 있도록 하는 작업입니다. Traditional Error Handling: 어떠한 함수를 호출하면 호출한 곳에서 함수의 return 값을 보고 에러가 났는지 아닌지를 체..
문제n개의 정수로 이루어진 임의의 수열이 주어진다. 우리는 이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. 단, 수는 한 개 이상 선택해야 한다. 예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/1912) 풀이처음에는 문제를 보고 난해하다 생각했습니다.(*^^*) 일부 연속된 수를 합해서 최대의 수를 만들어야했는데 음수가 과연 포함될 수 있을지에 대한 고민이 들었습니다. 그냥 생각해보면 음수가 더해지면 작아지니까 아닐 것 같았는데 생각해보니 100 -1 100 이라는 경우..
문제0부터 N까지의 정수 K개를 더해서 그 합이 N이 되는 경우의 수를 구하는 프로그램을 작성하시오. 덧셈의 순서가 바뀐 경우는 다른 경우로 센다(1+2와 2+1은 서로 다른 경우). 또한 한 개의 수를 여러 번 쓸 수도 있다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/2225) 풀이문제를 읽어보았을 때 꽤 간단한 문제라고 느껴서 바로 점화식을 세웠지만 조건을 하나 놓쳐서 다시 읽어본 문제입니다. 식은 간단히 세울 수 있었습니다 dp[N][K]를 K개의 정수를 더해서 N을 만드는 것이라고 정의를 합니다. 그렇게 되면 dp[N][K] = dp[N-(N또는 보다 작은 정수)][K-1]의 합이 됩니다. 즉 N또는 N보다 작은 숫자를 K-1개로 만들었다면 거기에다가 ..
문제 케빈 베이컨의 법칙은 모든 사람들이 서로 아는 사람 6단계 이내로 거쳐서 연결될 수 있다는 법칙입니다. N명의 사람이 주어졌을 때 자신을 제외한 모든 사람 각각과 연결된 합을 구한 것을 케빈 베이컨의 합이라고 하는데 최소 합을 가지는 사람의 번호를 출력하면 됩니다.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/1389) 풀이간단하게 BFS를 통해 풀 수 있는 문제입니다. 무조건 6단계 이내로 연결되기 때문에 BFS 탐색을 위한 큐가 비었을 때는 다른 사람과 몇단계를 거쳐서 연결되었는지 알 수 있게 됩니다. BFS를 사람수만큼 반복해주면 각 사람마다 연결된 합을 구할 수 있습니다. 코드https://github.com/kswim/Algorithm/blob/ma..
문제서쪽의 N개의 사이트, 동쪽의 M개의 사이트가 주어질 때 다리를 놓을 수 있는 경우의 수를 구하시오.문제 출처: 백준 온라인저지(https://www.acmicpc.net/problem/1010) 풀이꽤 간단한 문제인데 (혼자) 함정아닌 함정에 빠져서 1시간정도 걸린 문제입니다. 동쪽에 M개의 사이트로 N개의 다리를 놓는 경우의 수이고 모든 다리는 똑같이 생겼을 것이기 때문에 조합의 수와 같다고 할 수 있습니다. 처음에 생각을 하지 않고 풀었는지 이 문제가 dp일까? 하면서 조합을 구하는 공식 n!/k!(n-k)! 을 바로 적용해버렸습니다. 테스트케이스는 올바르게 나왔지만 신중히 제출하기 위해 질문검색을 찾아보니 바로 오버플로우가 나는 것을 알 수 있었습니다. N, M이 30이하이지만 30!만 해도 ..
문제N개의 원소를 가지는 수열이 주어졌을 때 가장 긴 증가하는 부분 수열의 크기를 구하시오.문제 출처: 백준 온라인 저지(https://www.acmicpc.net/problem/11053) 풀이DP를 통해 풀 수 있는 문제입니다. DP문제는 생각이나 구현면에서 다른 알고리즘에 비해 시간이 적게 걸린다는 장점이 있어서 요즘 공부를 하다가 집중이 안될 때 풀고 있는 중입니다! 풀이를 안적어도 될 정도로 간단한 문제들이 많지만 오랜만에 적어보겠습니다. 이 문제에서는 수열이 주어지고 가장 긴 증가하는 부분 수열을 구해야하기 때문에 두조건을 만족하는 경우 큰수가 dp배열에 저장될 수 있도록 했습니다. nums[i], dp[i] 라는 배열을 만들었고 nums에는 입력받은 값이 들어가있습니다. dp[i]의 값은 n..