본문 바로가기

알고리즘

(5)
(알고리즘) 멀리 뛰기 풀이 프로그래머스 멀리뛰기 문제를 풀면서 어떤 방식으로 접근해야 할 지 고민을 좀 했다 해당 문제는 멀리뛰기를 1칸 또는 2칸을 할 수 있고 해당 방법으로 맨 끝 칸 까지 갈 수 있는 경우의 수를 구하는 문제이다 사실 여러가지 방법이 있지만 나는 그림을 그려 보았다 사실 1과 2일 경우에는 1 하나와 (1,1) , 2 이렇게 2개 가 있어서 1과 2가 나올 것이고 3부터 그림을 그려서 얼추 가짓수를 생각해보았다그런데 이 갯수가 1 -> 2 -> 3 -> 5 -> 8 ... 이렇게 커지는 것이 아닌가?? 사실 이건 어디서 많이 본 것 같은데.. 바로 피보나치의 수열을 생각해보았다 피보나치의 수열은 첫째 및 둘째 항이 1이며 그 뒤의 모든 항은 바로 앞 두 항의 합인 수열 이라고 한다 이번 문제에서는 0이 존재하..
(알고리즘) 최소공배수와 최대공약수 구하기 알고리즘 문제를 풀다 보면 최대 공약수와 최소 공배수를 활용한 문제들이 자주 등장한다 오늘은 N개의 최소공배수 문제를 통해서 최소 공배수와 최대 공약수의 연관 관계를 알아보려고 한다 해당 문제는 배열 내부의 값들의 최소 공배수를 반환 하는 문제이다 이 문제는 쉽게 말하면 최대 공약수를 구한 다음에 남은 값들을 곱하면 되는 문제이다 최대 공약수는 말 그대로 에서 공통된 약수들의 최대 값이다 즉 저 숫자들로 더 이상 나누어 떨어질 수 없는 상태 까지 나누고 나눈 값을 곱한 값이 최대 공약수 이다 최소 공배수는 말 그대로 저 숫자들의 공통된 최소 공배수로 이는 즉 최소 공약수를 구한 후에 나머지 값 까지 구한 값이 될 수 있다 즉 위의 예제의 경우에는 2가 최대 공약수, 168이 최소 공배수가 되는 것이다 그..
(알고리즘) 기사단원의 무기 풀이 내가 생각을 했을 때에 기사 단원의 무기 문제의 핵심은 다음과 같았다매개 변수 number의 인자의 약수가 아닌 1부터 number까지의 약수의 값을 더한 것만약에 약수의 개수가 limit 값을 넘었을 경우 파워 값을 더한다이 2개의 문제를 풀어야 한다고 생각했다 우선 이 문제를 풀기 위해서 1부터 number까지의 배열을 정의 해주고 배열은 반복문을 돌면서 약수를 만드는 로직을 구현했다fun solution(number: Int, limit: Int, power: Int): Int { var answer = 0 val arr = IntArray(number){index -> index + 1} arr.forEachIndexed{ i, it -> answer += getP..
(알고리즘) 시저 암호 풀이 문제에서의 뜻은 문자를 다음 문자로 바꿔달라는 뜻이다단 소문자 z일 경우에는 소문자 a를 반환하고 공백은 그대로 공백으로 반환해야 한다고 써있다이 문제를 딱 보자마자 드는 생각은 아스키 코드를 사용해야한다는 생각이 들었다아스키 코드는 이런식으로 생겼는데 컴퓨터는 이 코드를 통해서 숫자를 영어와 특수 기호로 변경해준다는 말을 들은 적이 있다0100000Space1000000@1100000`0100001!1000001A1100001a0100010“1000010B1100010b0100011#1000011C1100011c0100100$1000100D1100100d0100101%1000101E1100101e0100110&1000110F1100110f0100111‘1000111G1100111g0101000(1001..
(알고리즘) 콜라츠 추측 문제 풀이 알고리즘 문제 중에 쉬운 듯 생각을 잘 해야 하는 콜라츠 추측 문제를 한번 풀어봤다  문제의 요약은 대충 이렇다 - 주어진 값이 짝수 일 경우 2를 나눈다 - 주어진 값이 홀수 일 경우 3을 곱한 후에 1을 더한다 - 연산 값이 1아 될 때 까지 계속 위 작업을 반복한다  - 1인 경우에는 0을 반환한다 - 500번 이상 반복할 경우에는 -1을 반환한다 문제의 해결 과제를 이런식으로 나누어서 생각했다 1. 주어진 값이 짝수와 홀수를 검사 후 연산 기능 2. 연산 값이 1이 될 때 까지 계속 위 작업을 반복하는 기능 3. 최초 입력 값이 1인 경우와 500번 이상 반복한 경우에 예외 처리  1. 연산 횟수와 연산 값을 임시로 저장하는 변수 생성 2. 주어진 값이 짝수와 홀수를 검사 후 연산 기능짝수와 홀수..