본문 바로가기

알고리즘/프로그래머스46

[Kakao_Blind_Recruitment 1차] 다트게임 다트게임카카오톡 게임별의 하반기 신규 서비스로 다트 게임을 출시하기로 했다. 다트 게임은 다트판에 다트를 세 차례 던져 그 점수의 합계로 실력을 겨루는 게임으로, 모두가 간단히 즐길 수 있다.갓 입사한 무지는 코딩 실력을 인정받아 게임의 핵심 부분인 점수 계산 로직을 맡게 되었다. 다트 게임의 점수 계산 로직은 아래와 같다. 다트 게임은 총 3번의 기회로 구성된다.각 기회마다 얻을 수 있는 점수는 0점에서 10점까지이다.점수와 함께 Single(S), Double(D), Triple(T) 영역이 존재하고 각 영역 당첨 시 점수에서 1제곱, 2제곱, 3제곱 (점수1 , 점수2 , 점수3 )으로 계산된다.옵션으로 스타상(*) , 아차상(#)이 존재하며 스타상(*) 당첨 시 해당 점수와 바로 전에 얻은 점수를.. 2018. 9. 10.
프로그래머스 나누어 떨어지는 숫자 배열 - 문제 divisible 메소드는 int형 배열 array와 int divisor를 매개변수로 받습니다. array의 각 element 중 divisor로 나누어 떨어지는 값만 포함하는 새로운 배열을 만들어서 반환하도록 divisible에 코드를 작성해 보세요.예를들어 array가 {5, 9, 7, 10}이고 divisor가 5이면 {5, 10}을 리턴해야 합니다. 이 문제를 푸는데 divisor로 나눠지는 값을 배열에 추가하기만 하면 끝인데 그 방법을 떠올리지 못해반복문을 한번 더 사용해서 비효율적으로 풀었다.다른사람의 코드를 보니 비효율적인 방법을 arraylist를 사용해서 해결했다.또 나는 배열의 크기를 필요한 만큼 받기 위해 반복문을 사용했는데 arraylist를 사용하면 동적으로 배열을 선언.. 2018. 4. 24.
프로그래머스 스트링을 숫자로 바꾸기 - 문제 strToInt 메소드는 String형 str을 매개변수로 받습니다. str을 숫자로 변환한 결과를 반환하도록 strToInt를 완성하세요. 예를들어 str이 1234이면 1234를 반환하고, -1234이면 -1234를 반환하면 됩니다. str은 부호(+,-)와 숫자로만 구성되어 있고, 잘못된 값이 입력되는 경우는 없습니다. 이 문제를 풀 때 Integer.parseInt가 양의 정수 값만 변환시켜주는 줄 알고 다른 방법을 찾고있었는데, 알고보니 음의 정수까지 지원을 해준다... 힘 빼지 않는 걸로.. 2018. 4. 24.
프로그래머스 가운데 글자 가져오기 - 문제getMiddle메소드는 하나의 단어를 입력 받습니다. 단어를 입력 받아서 가운데 글자를 반환하도록 getMiddle메소드를 만들어 보세요. 단어의 길이가 짝수일경우 가운데 두글자를 반환하면 됩니다.예를들어 입력받은 단어가 power이라면 w를 반환하면 되고, 입력받은 단어가 test라면 es를 반환하면 됩니다. 이 문제는 substring을 알고 있다면 쉽게 풀 수 있는 문제이다.substring을 설명하자면,예를들어 power라는 단어가 있을 때String word = "power";String word1 = word.substring();여기서 substring에 인자값으로 ( 1 ) 의 형태 혹은 (1, 4)와 같은 형태로 사용할 수 있다.(1)만 넣어준 경우에는 1번째 부터 끝까지 전체를.. 2018. 4. 24.
프로그래머스 삼각형 출력하기 문제 : printTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printTriangle 메소드를 완성하세요printTriangle이 return하는 String은 개행문자('\n')로 끝나야 합니다. 높이가 3일때 ******높이가 5일때 *************** 단지 별찍기에만 신경을 써서 문제의 조건대로 풀지 않았었다. 답을 유추하는 방법은 여러가지가 있지만 조건에 맞게 답을 내는 것도 하나의 방법이라고 생각된다. 2018. 4. 23.
프로그래머스 피보나치 수 알고리즘 문제는 한번 풀었다고 해서 끝난게 아니고, 실행시간이나 로직들의 최소화에 따라 달라지기 때문에 계속 반복해서 풀어야 할필요성을 느끼게 되었다.그래서 여태 풀어서 블로그에 올렸던 알고리즘들을 완벽히 할 때 까지 반복하려고 한다. - 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 처음에는 재귀함수를 사용해서 문제를 풀었다. 하지만 재귀함수로 할 경우 값이 커짐에 따라 실행시간이 오래 걸려 오답처리가 되었다그래서 반복문을 사용해서 다시 풀었다. 2018. 4. 23.