인공지능 시대, 코딩은 선택이 아닌 생존 전략입니다

코딩은 미래를 지배하는 기술의 언어, 당신의 가능성을 열어줄 열쇠입니다.

강의자료 335

[사고력수학] 계산 순서 바꿔 빠르게 계산하기

계산 순서 바꿔 빠르게 계산하기 연산 순서가 동일한 경우 +,- 또는 *,/ 와 같은 경우 계산 순서를 서로 바꾸어 빠르게 연산 할 수 있다. 다음은 문제 풀이 과정의 하나이다. 예제1) 73.2 – 32.1 + 26.8를 계산하시오. 문제풀이) (73.2 + 26.8) – 32.1 = 100 – 32.1 = 67.9 예제2) 123 – 73 + 19 + 377 + 981 - 27 을 계산하시오. 문제풀이) (981 + 19) + (377+123) – (73+27) = 1000 + 500 – 100 = 1400 위의 예시를 보고 다음의 문제를 풀어 보시오. 문제 1) 64.1 – 27.9 + 82.1 + 35.9 + 117.9 – 72.1를 계산하시오. 더보기 (64.1+35.9)+(82.1+117.9)..

명제

명제란? 명제란 객관적으로 참과 거짓을 구분 할 수 있는 문장으로 추상적이고 주관적인 견해를 배재한 문장이다. 예를 들어 "대한민국의 수도는 서울특별시이다" 에서 이 내용은 객관적으로 참,거짓을 판별 할 수 있으므로 명제이다. "이 컴퓨터는 비싸다" 에서 이 내용은 개인의 기준에 따라 참 거짓이 달라 질 수 있으므로 명제가 아니다. 이 때 조건은 알파벳 p,q,r 순으로 사용하고 그의 진리집합을 각각 영어 대문자를 사용하 P,Q,R로 사용하는 것이 관례이다. 논리연산자와 합성명제 1. 부정(not) ~p 와 같이 사용하면 문장 p가 명제일 때 "p가 아니다" 를 의미하며 p의 진릿값의 반대를 갖는 명제이다. 2. 논리곱(and) p ∧ q 와 같이 사용하며 p,q가 명제일 때 p,q 의 진릿값이 모두 참..

백준 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) 구현 여..