본문 바로가기
알고리즘

[Algorithm] 6월19일 알고리즘 연습 (프로그래머스 LEVEL2) - 에이젠

by eigen96 2022. 6. 19.
728x90

Lv. 2 피보나치 수 - 성공

내풀이(1) : 정확도 42.9%, 시간초과. 

피보나치의 계산 결과를 기억하면서 계산할 수 있는 방법을 사용.

비슷한 문제를 푼 기억이 있음.

class Solution {
    public int solution(int n) {
        int answer = 0;
        answer = fibo(n);
        return answer;
    }
    
    public int fibo(int k){
        int result = 0;
        if(k == 1) return 1;
        if(k == 0) return 0;
        result = (fibo(k-2) + fibo(k-1)) % 1234567;
        return result; 
    }
}

 

내풀이(2)

class Solution {
    public int solution(int n) {
        int answer = 0;
        answer = fibo(n);
        return answer;
    }
    
    public int fibo(int k){
        int result = 0;
        if(k == 1) return 1;
        if(k == 0) return 0;
        int a = 0;
        int b = 1;
        for(int i = 2; i <= k ; i++){
            result = (a + b) % 1234567;
            a = b;
            b = result;
        }
        
        return result; 
    }
}

 

Lv. 2 하노이의 탑 - 실패

참고한 풀이

import java.util.*;
 
class Solution {
    
    ArrayList<int[]> list;
    
    public int[][] solution(int n) {
        list = new ArrayList<>();
        hanoi(1, 2, 3, n); //n개의 원판을 1에서 시작 -> 2를 거쳐 -> 3으로 옮긴다.
        int[][] result = new int[list.size()][2];
        for(int i = 0; i < list.size(); i++) {
            result[i][0] = list.get(i)[0];
            result[i][1] = list.get(i)[1];
        }
        return result;
    }
    
    public void hanoi(int s, int v, int e, int n) {
        int[] move = {s, e};
        
        if(n == 1) list.add(move);
        else {
            hanoi(s, e, v, n - 1);
            list.add(move);
            hanoi(v, s, e, n - 1);
        }
    }
}

https://moonsbeen.tistory.com/62

 

[프로그래머스]하노이의 탑 - JAVA

[프로그래머스]하노이의 탑 programmers.co.kr/learn/courses/30/lessons/12946 코딩테스트 연습 - 하노이의 탑 하노이 탑(Tower of Hanoi)은 퍼즐의 일종입니다. 세 개의 기둥과 이 기동에 꽂을 수 있는 크기가..

moonsbeen.tistory.com

 

Lv. 2 행렬의 곱셈 - 실패

참고한 풀이

class Solution {
      public int[][] solution(int[][] arr1, int[][] arr2) {
          int[][] answer = new int[arr1.length][arr2[0].length];

          for(int i = 0 ; i < arr1.length ; ++i){
              for(int j = 0 ; j < arr2[0].length ; ++j){
                  for(int k = 0 ; k < arr1[0].length ; ++k) {
                      answer[i][j] += arr1[i][k] * arr2[k][j];
                  }
              }
          }

          return answer;
      }
  }

https://velog.io/@hyeon930/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%ED%96%89%EB%A0%AC%EC%9D%98-%EA%B3%B1%EC%85%88-Java

 

[프로그래머스] 행렬의 곱셈 (Java)

프로그래머스 행렬의 곱셈단순히 행렬의 계산을 하려고 하면 어렵지 않다. 그런데 코드로 옮기려고 하면? 생각보다 쉽게 구현되지 않았다. 그래서 다시 행렬 연산을 공부하고 하나씩 옮겨봤다.

velog.io

 

 

Lv. 2 JadenCase 문자열 만들기 - 실패

참고한 풀이

public static String solution (String s ) {
			String answer =""	;
			String[] arr = s.toLowerCase().split(""); // 공백도 문자취급해주기
			StringBuilder sb = new StringBuilder();
			
			boolean blank = true; // 첫 글자는 무조건 대문자니까.
			
			for ( String str : arr) {
				answer += blank? str.toUpperCase() : str;
				blank = str.equals(" ")? true : false;
				
			}
			
			
			return answer;	
		}

https://hj-bank.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-JadenCase-JAVA

 

[프로그래머스] JadenCase [JAVA]

출처 : programmers.co.kr/learn/courses/30/lessons/12951 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주..

hj-bank.tistory.com

 

 

728x90

댓글