분류 전체보기89 [DP] 백준 1699 제곱수의 합 C++ https://www.acmicpc.net/problem/1699 1699번: 제곱수의 합 어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다 www.acmicpc.net 풀이 : 간단한 문제자체는 간단한데 나만 어려웠나..? 생각보다 잘 안풀렸다. 솔루션 자체는 간단한데 생각보다 제곱수 빼고 하는 걸 구현하는데 삽질을 좀 했다. 해결하는 아이디어 자체는 조금 생각해보면 금방 떠올릴 수 있는 정도 내가 어려웠던 점은 반복문 한번으로 구할 수 있을 것 같아서 고민하다가 결국 솔루션을 봤는데 이중 반복문으로 j * j > N; f.. 2022. 1. 26. [DP] 백준 2294 동전2 C++ https://www.acmicpc.net/problem/2294 2294번: 동전 2 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. 가치가 같은 동전이 여러 번 주 www.acmicpc.net 풀이 : n 가지 동전으로 합이 k원이 되는 동전의 최소갯수를 구하는 문제 비슷한 문제로는 유명한 배낭문제랑 비슷하다. coins배열 : n개의 동전 종류 1원부터 시작하기위해 0번인덱스는 0으로두고 1부터 n까지 동전 설정 dp 배열 : dp[n] = 가치가 n원일 때 동전의 최소 갯수 예를 들어 설명하면 동전이 n원일때(coin[] 에서 가져오면 됨) 가치가 k면.. 2022. 1. 25. jpg, png, svg 차이, 리액트에서 svg 다루기 최근 리액트 material ui 라이브러리를 처음 써보면서 icon을 가져와서 사용 한적이 있다. 확인해 보니 svg파일 형태를 가져오는 걸 알게됨 리액트에서 svg파일을 어떻게 사용하는지! 여러 이미지 파일 확장자 들과 차이점이 무엇인지 알아보자! 우선 웹에서 사용하는 이미지는 크게 비트맵과 벡터로 구분됨! 비트맵(Bitmap) 픽셀 단위의 정보의 집합으로 레스터(Raster) 이미지라고도 부릅니다. 일반적으로 사용하는 대부분의 이미지가 비트맵 형식(jpg, png ...) 그림판, 포토샵 같은 툴로 편집 픽셀 단위로 작업하므로 자연스러운 이미지 표현가능(장점) 이미지 확대 / 축소 시 계단현상 발생, 픽셀 수 가 많아질 수록 파일 커지는 단점 벡터(vector) 수학적 함수를 이용하여 도형이나 선을.. 2022. 1. 25. [문자열] 백준 5430 AC C++ https://www.acmicpc.net/problem/5430 [5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net](https://www.acmicpc.net/problem/5430) 풀이 : 문제만 읽었을 때 쉬워보여서 금방 풀었는데 에러가 나서 고친부분이 많음 조금 디테일하게 생각해야할 부분이 조금 있다. 문제의 핵심을 크게 나누어 보면 [1,2,3,4] 이런 식으로 입력되는 배열을 다루기 쉽게 파싱하는 부분 R -> 해당 배열을 뒤집는 부분 D -> 첫번째 원소를 삭제하는 부분 이렇게 3가지 정도로 나눌 수 있는데 가장 큰 핵심은 2번 뒤집는 부분이였다. 각.. 2022. 1. 24. 퀵 소트(Quick Sort) 이름이 퀵소트지만 가장 빠른 정렬 방법은 아니다. 평균 시간복잡도는 O(N*logN) 이고 최악의 경우 시간복잡도는 O(N^2) 동작 원리: 특정 값을 기준으로 큰 숫자와 작은 숫자를 서로 교환한뒤에 배열을 나누는(분할)방법을 사용 여기서 특정 값을 pivot 값이라고 하는데 보통 첫 번째 원소를 pivot으로 설정하고 초기 시작을 한다. 동작을 풀어서 설명하면 피벗값을 설정한다 -> 왼쪽에서 부터 피벗값 보다 큰 숫자를 찾고 오른쪽에서 부터 피봇값 보다 작은 수를 찾는다. -> low 그러면 피봇값을 기준으로 2분할 되는데 각각 똑같이 quick sort를 수행해 주면 된다. 코드 : #include #include #include using namespace std; int arr[20]; void .. 2021. 10. 6. 병합정렬 (Merge Sort) 알고리즘 처음 배울 때 Merge Sort, Quick Sort에서 본격적으로 어려워 했던 기억이 난다. 재귀함수에 익숙하지 않으면 이해하기 어려운데 그림으로 천천히 따라가면 이해하기가 쉽다 분할 정복기법이라고 해서 - 분할 : 해결하기 쉽도록 문제를 여러개의 작은 부분으로 나눈다 - 정복 : 나눈 작은 문제를 각가 해결한다 - 통합 : 해결된 해답을 모은다 과정을 거치는 알고리즘이다 그림만 보면 어렵지 않은데 재귀적으로 호출 되고 정렬되고 합쳐진다는 개념이 생소했던 기억이 난다. divide(분할) 와 merge(합병) 두가지 함수로 구성되었는데 각각 살펴보면 void divide(int left, int right) { int mid; if (left < right) { mid = (left + ri.. 2021. 9. 24. 이전 1 ··· 9 10 11 12 13 14 15 다음