수학
-
프로그래머스 행렬의 곱셈 c++ 풀이 Level 2 연습문제 행렬의 곱셈 문제 정리 2차원 행렬 arr1, arr2가 주어질때 두 행렬을 곱한 결과를 반환하는 함수를 작성하여라 행과 열의 길이는 2 이상 100 이하이다. (최대 100x100) 행렬의 원소는 -10 이상 20 이하의 자연수이다. 곱할 수 있는 배열만 주어진다. 문제 풀이 20^2 x 100 = 400 x 100 = 40000으로 int형으로 가능 이 문제는 단순히 행렬 곱셈의 개념만 알고 있다면 풀 수 있습니다. 2차원 벡터를 다루는 문제로 좋은 예제라고 생각합니다. (실제로 제가 그랬음) 왼쪽 행렬의 i행, 오른쪽 행려의 j열을 sumproduct 하면 새로운 행렬의 (i,j) 위치의 값이 됩니다. 예를들어 arr1의 1행, arr2의..
[수학, 2차원 벡터] 프로그래머스 level2 행렬의 곱셈 c++ 풀이프로그래머스 행렬의 곱셈 c++ 풀이 Level 2 연습문제 행렬의 곱셈 문제 정리 2차원 행렬 arr1, arr2가 주어질때 두 행렬을 곱한 결과를 반환하는 함수를 작성하여라 행과 열의 길이는 2 이상 100 이하이다. (최대 100x100) 행렬의 원소는 -10 이상 20 이하의 자연수이다. 곱할 수 있는 배열만 주어진다. 문제 풀이 20^2 x 100 = 400 x 100 = 40000으로 int형으로 가능 이 문제는 단순히 행렬 곱셈의 개념만 알고 있다면 풀 수 있습니다. 2차원 벡터를 다루는 문제로 좋은 예제라고 생각합니다. (실제로 제가 그랬음) 왼쪽 행렬의 i행, 오른쪽 행려의 j열을 sumproduct 하면 새로운 행렬의 (i,j) 위치의 값이 됩니다. 예를들어 arr1의 1행, arr2의..
2020.07.08 -
프로그래머스 피보나치 수 c++ 풀이 Level 2 연습문제 피보나치 수 문제 정리 n이 주어질 때 n번째 피보나치 수를 1234567로 나눈 나머지를 구하여라 n은 2이상 100000 이하이다. 문제 접근 피보나치 수를 알기 위해서는 이전의 2개의 수만 알면 된다. 그렇기 때문에 2개의 수만 관리한다. n이 최대 100,000이기 때문에 배열을 모두 만들면 낭비이다. 또한 계속 값을 더해나간 후 마지막에 모듈러 연산을 하면 값이 범위를 넘어 이상한 값이 나올 수 있다. 그렇기 때문에 모듈러 연산의 성질을 이용하면 간단히 풀 수 있다. 모듈러 연산의 성질 이 성질만 안다면 간단히 풀 수 있습니다. (a + b) % c = ((a % c) + (b % c)) % c 예를들어 (10 + 1) % 3 = (1..
[수학, 모듈러 성질] 프로그래머스 level2 피보나치 수 c++ 풀이프로그래머스 피보나치 수 c++ 풀이 Level 2 연습문제 피보나치 수 문제 정리 n이 주어질 때 n번째 피보나치 수를 1234567로 나눈 나머지를 구하여라 n은 2이상 100000 이하이다. 문제 접근 피보나치 수를 알기 위해서는 이전의 2개의 수만 알면 된다. 그렇기 때문에 2개의 수만 관리한다. n이 최대 100,000이기 때문에 배열을 모두 만들면 낭비이다. 또한 계속 값을 더해나간 후 마지막에 모듈러 연산을 하면 값이 범위를 넘어 이상한 값이 나올 수 있다. 그렇기 때문에 모듈러 연산의 성질을 이용하면 간단히 풀 수 있다. 모듈러 연산의 성질 이 성질만 안다면 간단히 풀 수 있습니다. (a + b) % c = ((a % c) + (b % c)) % c 예를들어 (10 + 1) % 3 = (1..
2020.07.07 -
BOJ 1676번 팩토리얼 0의 개수 c++ 및 java 풀이 난이도: 실버3 백준 1676번 팩토리얼 0의 개수 문제 정리 N이 주어질때 N!의 맨 뒤에서 부터의 0이 아닌 숫자가 나올때 까지의 0의 개수를 구하여라 N은 0이상 500이하의 수이다. 문제 접근 처음에는 나이브하게 팩토리얄을 직접구해보려 했습니다. 하지만 역시나 20!까지 밖에 구할 수 없었습니다. 그래서 규칙을 찾아보았다. 16팩토리얄 까지 구해보면서 0의 개수가 군수열을 이루는것 같았습니다. 그래서 그렇게 풀었지만 실패... 그래서 다른 방법을 생각해보았습니다. 10이 몇개 곱해지는지 찾는 것!! 10이 몇개있는지 찾기 위해 인수분해하여 2와 5가 몇개있는지 찾아갑니다. 그리고 2와 5의 개수중 최소값이 10의 개수가 됩니다. 예를들..
[수학, DP] 백준 1676번 팩토리얼 0의 개수 c++, java 풀이BOJ 1676번 팩토리얼 0의 개수 c++ 및 java 풀이 난이도: 실버3 백준 1676번 팩토리얼 0의 개수 문제 정리 N이 주어질때 N!의 맨 뒤에서 부터의 0이 아닌 숫자가 나올때 까지의 0의 개수를 구하여라 N은 0이상 500이하의 수이다. 문제 접근 처음에는 나이브하게 팩토리얄을 직접구해보려 했습니다. 하지만 역시나 20!까지 밖에 구할 수 없었습니다. 그래서 규칙을 찾아보았다. 16팩토리얄 까지 구해보면서 0의 개수가 군수열을 이루는것 같았습니다. 그래서 그렇게 풀었지만 실패... 그래서 다른 방법을 생각해보았습니다. 10이 몇개 곱해지는지 찾는 것!! 10이 몇개있는지 찾기 위해 인수분해하여 2와 5가 몇개있는지 찾아갑니다. 그리고 2와 5의 개수중 최소값이 10의 개수가 됩니다. 예를들..
2020.06.27 -
프로그래머스 연습문제 자릿수 더하기 자바, 파이썬 풀이 Level 1 자릿수 더하기 문제 정리 자연수 N이 주어지면 각 자릿수의 합을 구해서 return 하는 solution 함수를 작성해라 문제 풀이 10으로 계속 나눠가며 나머지를 더해준다. 주어진 수 n은 10을 나눈 몫으로 update해준다. n이 10보다 작아질때 까지 반복한다 while문이 탈출하면 10보다 작아진 n을 ans에 마지막으로 더해준다. 예를 들어 123이 있다. 123을 10으로 나눈 나머지는 3이다 // 합 3 123을 10으로 나눈 몫은 12이다. // n=12 12를 10으로 나눈 나머지는 2이다 // 합 3+2 = 5 12를 10으로 나눈 몫은 1이다. // n=1 n이 10보다 작아졌으므로 탈출 마지막 n을 더해 준다 /..
[수학] level1 프로그래머스 자릿수 더하기 자바, 파이썬 풀이프로그래머스 연습문제 자릿수 더하기 자바, 파이썬 풀이 Level 1 자릿수 더하기 문제 정리 자연수 N이 주어지면 각 자릿수의 합을 구해서 return 하는 solution 함수를 작성해라 문제 풀이 10으로 계속 나눠가며 나머지를 더해준다. 주어진 수 n은 10을 나눈 몫으로 update해준다. n이 10보다 작아질때 까지 반복한다 while문이 탈출하면 10보다 작아진 n을 ans에 마지막으로 더해준다. 예를 들어 123이 있다. 123을 10으로 나눈 나머지는 3이다 // 합 3 123을 10으로 나눈 몫은 12이다. // n=12 12를 10으로 나눈 나머지는 2이다 // 합 3+2 = 5 12를 10으로 나눈 몫은 1이다. // n=1 n이 10보다 작아졌으므로 탈출 마지막 n을 더해 준다 /..
2020.04.21 -
프로그래머스 연습문제 약수의 합 풀이 Level 1 약수의 합 문제 정리 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해라 문제 풀이 말 그대로 약수를 모두 구해서 구한 약수를 모두 더해주면 됩니다. n이하의 수로 모두 나누어 보며 나누어 떨어지는 수를 모두 더합니다. 예를 들어 5는 1,2,3,4,5로 모두 나누어 봅니다. 이중에서 나누어 떨어지는 수는 1과 5이므로 답은 6이 됩니다. 약수의 합 Java 코드 public static int solution(int n) { int answer = 0; for(int i=1; i
[수학, for문] Level1 프로그래머스 연습문제 약수의 합 자바, 파이썬 풀이프로그래머스 연습문제 약수의 합 풀이 Level 1 약수의 합 문제 정리 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해라 문제 풀이 말 그대로 약수를 모두 구해서 구한 약수를 모두 더해주면 됩니다. n이하의 수로 모두 나누어 보며 나누어 떨어지는 수를 모두 더합니다. 예를 들어 5는 1,2,3,4,5로 모두 나누어 봅니다. 이중에서 나누어 떨어지는 수는 1과 5이므로 답은 6이 됩니다. 약수의 합 Java 코드 public static int solution(int n) { int answer = 0; for(int i=1; i
2020.04.20 -
BOJ 1297번 TV 크기 자바(java) 풀이 랭크 : 브론즈4 백준 1297번 TV 크기 오랜만에 풀어보는 브론즈 문제입니다. 요즘 서류 쓰냐고 바빠서 알고리즘을 풀지 못하고 있는데요 그래도 1일 1커밋 하고 싶어서 쉬운거라도 찾아서 풀어봤습니다~~ 문제 정리 TV의 대각선 길이, 높이와 너비의 비율이 주어질때 실제 높이와 너비의 길이를 구하여라 만약, 실제 TV의 높이나 너비가 소수점이 나올 경우에는 그 수보다 작으면서 가장 큰 정수로 출력한다. 문제 풀이 이 문제는 피타고라스의 정리를 알면 간단히 풀 수 있는 문제입니다. 피타고라스의 정리를 바탕으로 방정식을 세우고 해를 구하면 됩니다. 피타고라스의 정리 c^2 = a^2 + b^2 (단 c는 빗변)빗변은 대각선의 길이가 되고 a와 b는 높이와 ..
[수학] 백준 1297번 TV 크기 자바(java) 풀이BOJ 1297번 TV 크기 자바(java) 풀이 랭크 : 브론즈4 백준 1297번 TV 크기 오랜만에 풀어보는 브론즈 문제입니다. 요즘 서류 쓰냐고 바빠서 알고리즘을 풀지 못하고 있는데요 그래도 1일 1커밋 하고 싶어서 쉬운거라도 찾아서 풀어봤습니다~~ 문제 정리 TV의 대각선 길이, 높이와 너비의 비율이 주어질때 실제 높이와 너비의 길이를 구하여라 만약, 실제 TV의 높이나 너비가 소수점이 나올 경우에는 그 수보다 작으면서 가장 큰 정수로 출력한다. 문제 풀이 이 문제는 피타고라스의 정리를 알면 간단히 풀 수 있는 문제입니다. 피타고라스의 정리를 바탕으로 방정식을 세우고 해를 구하면 됩니다. 피타고라스의 정리 c^2 = a^2 + b^2 (단 c는 빗변)빗변은 대각선의 길이가 되고 a와 b는 높이와 ..
2020.04.13