2025년, 코딩은 선택이 아닌 필수!

2025년 모든 학교에서 코딩이 시작 됩니다. 먼저 준비하는 사람만이 기술을 선도해 갑니다~

강의자료 347

백준 2675 문자열 반복문제 엔트리로 해결하기

문제 출처 : https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 문제를 살펴 보면 테스트케이스를 입력 받고 문자열과 반복할 횟수를 입력 받아 문자열을 하나씩 잘라내서 반복할 횟수만큼씩을 반복하여 하나의 문자열을 만들어 출력한다. ​ 알고리즘 테스트 케이스 횟수를 입력 받는다. 테스트 케이스 횟수 만큼 반복하면서 다음을 수행한다. 반복횟수와 문자열을 입력 받는다. 문자열 길이만큼 반복하면서 앞에서 부터 문자열을 하나씩 잘라내어 반복횟수만큼..

[알고리즘 수학] 마지막 공의 색깔 맞추기

바구니 안에 빨간공 120개와 파란공 30개가 들어 있다. 이렇게 들어 있는 바구니에서 다음과 같은 절차에 의해 공을 꺼낸다. 1. 두개의 공을 꺼낸다. 2. 만약 두개의 공의 색깔이 같으면 빨간공 한개, 서로 다르면 파란공 한개를 집어 넣는다. 3. 1과 2를 계속 반복한다. 바구니의 마지막 공의 색깔은 어떤 색이 될까? 문제풀이) 바구니 안의 공이 빨간공 120개 파란공 30개 에서 시작을 한다. 만약 두개 모두 빨간공을 꺼냈다면 빨간공이 119개,파란공 30개가 된다. 두개 모두 파란공이었다면 빨간공이 121개,파란공은 28개가 된다. 두개 모두 색깔이 다르다고 하면 빨간공 119개 파란공 30개가 된다. 이것을 확인 했을 때 빨간공은 1개가 줄거나 1개가 늘어난다. 파란공은 0개가 줄거나 2개가 ..

[사고력수학]소인수분해를 이용하여 곱셈연산하기

소인수 분해를 이용하여 계산하기 곱셈 연산을 할 때 소인수 분해를 이용하여 계산하면 계산이 빨라진다. 다음은 문제 풀이 과정의 하나이다. 예제1) 75 * 12를 계산하시오. 문제풀이) (3 * 25) * (3*4) = 3*3 * 25*4= 900 4*25 = 100 이 되는 원리를 이용하여 연산하였다. 예제2) 250 * 48 을 계산하시오. 문제풀이) 250 * 48 = (2*125) * ( 3*2*8) = (3*2*2)*(8*125)=12000 125 * 8 = 1000이 되는 원리를 이용하여 연산하였다. 위의 예시를 보고 다음의 문제를 풀어 보시오. 문제 1) 44 * 25 를 계산하시오. 더보기 4*11*25=1100 문제2) 625 * 16 을 계산하시오. 더보기 6*125*2*8=12000

[알고리즘] 모스알고리즘(Mo's algorithm)

모스알고리즘이란? 모스 알고리즘은 업데이트가 없는 구간 쿼리들을 처리하는 알고리즘이다. 기본 아이디어는 업데이트가 없기 때문에 '앞에서 계산된 값을 최대한 활용하자'이다. 특히 조회만 하는 경우는 쿼리의 순서를 자유롭게 바꿀 수 있는 환경에서 미리 계산된 값을 다시 이용할 수 있을 것이다. 이전에 살펴 보았던 제곱근분할법(https://wondangcom.tistory.com/2721) 을 이용하여 모스알고리즘을 구현 할 수 있는데 이 알고리즘으로 해결할 수 있는 문제는 원소의 수정은 없고 구간 내에서 어떤 결과를 찾는 종류의 쿼리만 있는 문제이다. 그렇다면 기존 문제보다 활용범위가 좁은 것은 아닐까? 간혹 세그먼트 트리 등을 이용해서 해결하지 못하는 경우가 발생한다. 이러한 문제 유형은 아래에서 살펴 ..

머신러닝] 교차검증으로 평가하기

다항 회귀(https://wondangcom.tistory.com/2684) 에서 우리가 과대 적합과 과소적합을 피하는 방법으로 교차검증으로 판단 한다고 언급을 했었다. 여기서는 교차검증은 무엇이고 어떤 원리인지 살펴 보자. 1. 교차검증의 원리 교차 검증은 전체 데이터 세트를 훈련세트와 테스트 세트를 8:2로 나눈 다음 훈련세트에 해당하는 부분을 다시 K개의 덩어리로 나눈다. 그런 다음 1개씩을 따로 떼어서 검증에 사용하고 나머지 4개의 덩어리를 훈련에 사용하는 방식이다. 2. 교차 검증 과정 훈련 세트를 k개의 폴드로 나눈다. 첫번째 폴드를 검증 세트로 사용하고 나머지 폴드(k-1ro)를 훈련 세트로 사용한다. 모델을 훈련한 다음에 검증세트로 평가한다. 차례대로 다음 폴드를 검증 세트로 사용하여 반복..

[사고력 수학] 숫자를 채워서 계산하기

계산할 때 10,100,1000 과 같이 숫자를 채워서 계산하면 계산이 빨라진다. 다음은 문제 풀이 과정의 하나이다. 예제1) 45 + 78 + 55 + 22 를 계산하시오. 문제풀이) (45 + 55) + (78 + 22) = 200 예제2) 98 + 997 + 8977 을 계산하시오. 문제풀이) (100-2) + (1000 - 3) + (9000 - 23) = 10100 - 28 = 10072 위의 예시를 보고 다음의 문제를 풀어 보자. 문제 1) 154 + 27 + 46 + 173 을 계산하시오. 더보기 문제풀이) (154 + 46) + (27 + 173) = 400 정답) 400 문제2) 1977 + 2302 + 7983 + 9999 을 계산하시오 더보기 문제풀이) (2000 - 23) + (23..

알고리즘 수학] 맥너겟수

맥너겟수란? 맥도날드에서 판매하는 치킨 맥너겟은 처음에 6조각,9조각,20조각으로만 판매했는데 이에 6,9,20의 합으로 얻을 수 있는 자연수를 맥너겟 수라고 한다. 예를 들어 6 + 6 = 12, 6+9+9+9+20=53 이므로 12와 53은 맥너겟 수이다. 맥너겟 수에 맥너겟 수를 더하거나 곱해도 맥너겟 수이다. 곧 덧셈과 곱셈은 맥너겟 수의 집합에 대하여 닫혀 있다. 출처 - https://namu.wiki/w/%EB%A7%A5%EB%84%88%EA%B2%9F%20%EC%88%98 맥너겟 수 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 ..

[알고리즘] 제곱근 분할법(Sqrt Decomposition)

제곱근 분할법(Sqrt Decomposition)이란? Sqrt Decompostion 의 아이디어는 다음과 같다. 1 2 3 4 5 6 7 8 9 위와 같이 9 개의 원소가 있다면 연속적인 원소들을 하나의 묶음으로 생각한다는 것이다. 이 때 한 묶음을 √N 개로 묶는다( 따라서 Sqrt 라는 이름이 붙는다.) (1,2,3),(4,5,6),(7,8,9) 위와 같이 3개의 그룹으로 묶은 다음 각 그룹에 대푯값을 정한다. 만약 그룹의 합을 구하는 쿼리라고 하면 그룹의 합이 대푯값이 되고 쿼리가 구간의 최댓값을 구하는 쿼리라면 그룹의 최댓값이 구간의 쿼리가 된다. 이러한 제곱근 분할법은 Mo's Algorithm 의 기반이 되는 알고리즘으로 사용된다. 제곱근 분할법(Sqrt Decomposition) 구현 여..

[사고력 수학] 판매한 사과와 배의 개수는

원당이는 과일가게에서 아르바이트를 하고 있다. 원당이가 판 과일을 세어 보니 사과와 배의 개수의 합이 20개였고 총 금액을 보니 9500원이었다. 사과와 배의 판매 개수는 몇 개이겠는가? 여기서 사과의 가격이 300원이었다는 것만 알고 있다. 또한 판매 개수는 각각 6개 이상 이었다면 배의 가격이 최대가 되고 사과와 배의 판매 갯수는 최소가 되었을 때의 사과와 배의 개수는 몇개인가? 문제 풀이) b가 사과의 갯수 a가 배의 갯수, x가 배의 가격이라면 ax + b*300= 9500 a + b = 20 b = 20 - a ax + (20-a)*300=9500 ax - 300a = 9500 - 6000 a = 3500/(x-300) 여기서 3500을 나누어 떨어뜨리는 가장 큰 수를 찾았을 때 최솟값 a를 찾..

[사고력 수학] 땅의 넓이를 계산해 주자.

원당이는 정사각형 모양의 땅을 가지고 있다. 그런데 주변에 땅을 가지고 있던 마전이가 남쪽 부분의 1/3만큼을 잘라서 주면 오른쪽으로 원당이가 가지고 있는 길이의 1/2 만큼 맞춰서 땅을 교환하자고 한다. 즉 원당이의 땅은 세로 방향으로 1/3 만큼 줄고 가로 방향으로 1/2 만큼 늘어나게 된다. 원당이는 이 교환을 수락해야 할까? 만약 이득이라면 얼마만큼의 이득을 볼 수 있는지 계산 해 주자. 문제풀이) 좌측의 원래 땅의 모양이 우측의 땅 모양으로 바뀌었다. 원래 땅의 넓이가 1 이었다면 바뀐 모양의 땅은 2/3 * 3/2 = 1 이다. 결국 원래 넓이와 동일하기 때문에 교환을 수락하는 것은 의미가 없다. 정답) 넓이가 같기 때문에 교환을 할 의미가 없다.(땅의 가치는 모양이나 위치에 따라 다르기 때문..