[개발일지]210803 TIL

Gooder·2021년 8월 3일
2

개발일지

목록 보기
6/28

알고리즘

이차원 배열 접근

이차원 배열을 접근할 때는 헷갈릴 수 있으니까 index를 row,col로 설정하고 다루는게 내가 이해하기 쉽고 안헷갈린다는걸 알았다.

완전 탐색

순열, 조합의 모든 형태를 구할 때는 boolean형 배열을 만들고 해당 숫자를 인덱스로 접근할 수 있게하는 것이 좋다.

순열

순서에 맞춰서 뽑으면서 isSelected라는 배열을 두어서 사용한 수를 체크하고, 재귀적으로 수들을 뽑은 후에는 다시 false로 돌려주는 과정을 통해 뽑은 순서에따른 결과를 저장한다.
(ex. 순열, 조합할 데이터들이 연속인지는 관계가 없다. 왜냐면 그 데이터들을 담고있는 자료형의 index를 인덱스로하는 boolean형이기 때문이다)

class Permutation{
	static int R = 3,N = 6;
	static int[] input;
	static int[] numbers;
	static boolean[] isSelected;

	public static void main(String[] args){
		input = new int[] {0,1,2222,33333333,21728010,950218};
		numbers = new int[R];
		isSelected = new boolean[N];

		permutation(0);
	}
	private static void permutation(int cnt){
		int(cnt == R){
			System.out.println(Arrays.toString(numbers);
			return ;
		}
		for(int i = 0;i<N;i++){
			if(isSelected[i]) continue;

			numbers[cnt] = num[i];
			isSelected[i] = true;

			permutation(cnt+1);
			isSelected[i] = false;
		}
	}
}

조합

순열과 다르게 뽑은 순서는 중요하지않기 때문에, isSelected 배열은 필요없다.
combination은 재귀로 짜려면 다음과 같이 짜면 된다.

class Permutation{
	static int R = 3,N = 6;
	static int[] input;
	static int[] numbers;

	public static void main(String[] args){
		input = new int[] {0,1,2222,33333333,21728010,950218};
		numbers = new int[R];

		combination(0,0);
	}
	private static void combination(int cnt,int start){
		int(cnt == R){
			System.out.println(Arrays.toString(numbers);
			return ;
		}
		for(int i = 0;i<N;i++){
			numbers[cnt] = num[i];
			combination(cnt+1,i+1);
		}
	}
}

소소한 알고리즘적인 사고

  • stack에 넣었다가 빼기만하는 연산 (ex.괄호 체크)은 stack에 넣으면 top이 올라가는 것처럼 index만 조절해서 접근하는 방식도 좋을 것 같다.
  • intput으로 주어지는 범위를 보면서 overflow, underflow를 항상 고려하자!!

백엔드

controller에서 curl 기능 구현하는 방법

API를 이용해서 토큰값과 userdata를 받아올 때 사용할 수 있다.

URL url = new URL(sUrl+accessToken);
        HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("User-Agent", USER_AGENT); // add request header
profile
세상을 변화시킬 신스틸러 서비스를 만들고싶은 개발자 Gooder 입니다.

0개의 댓글