은세고화
뚜렷한 기억보단 흐릿한 잉크를
은세고화
전체 방문자
오늘
어제
  • 분류 전체보기 (95)
    • TDD (2)
      • 학점 산출 프로그램 (2)
    • IT (43)
      • 부스트코스 (18)
      • CS50 (3)
      • 도서추천 알고리즘 (2)
      • 스터디 일정 (3)
      • 스프링 (3)
      • 프로젝트 개발 중 발생한 에러 (8)
      • 웹개발 (3)
      • DB (3)
    • 독서 후기 (12)
      • 도서 (12)
    • e북 (3)
    • 알고리즘 (26)
    • 프로젝트 (6)
      • 향수 (6)
    • 회고 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
은세고화

뚜렷한 기억보단 흐릿한 잉크를

알고리즘

백준 14888 자바 연산자 끼워넣기

2022. 3. 22. 21:12
반응형

접근 아이디어

연산자 배열이 2, 3, 0, 1 이렇게 주어졌다면 하나씩 줄이고 재귀로 탐색한다.

숫자 배열을 매번 연산해서 재귀 탐색을 진행할 것이므로 depth는 1부터 시작하고 0번째 값을 sum이라는 인자로 보낸다. for문으로 연산자를 하나 선택했다면 calculrator함수를 이용해서 바로 연산을 진행한 뒤 재귀를 수행한다.

 

 

잘 한 부분

크게 어렵지 않았고 연산을 따로 함수로 구분해서 보기 편하게 코드를 짯다.

 

 

부족한 부분

연산자를 감소시키고 재귀를 돌렸으면 다시 증가시켜야 하는 부분을 깜박했다.

 

 

 

package backjon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class 연산자끼워넣기_14888 {

	static int T;
	static int[] src, op;
	static int max, min;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		T = Integer.parseInt(br.readLine());
		
		src = new int[T];
		op = new int[4];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i = 0; i < T; i++) {
			src[i] = Integer.parseInt(st.nextToken());
		}
		st = new StringTokenizer(br.readLine());
		op[0] = Integer.parseInt(st.nextToken());
		op[1] = Integer.parseInt(st.nextToken());
		op[2] = Integer.parseInt(st.nextToken());
		op[3] = Integer.parseInt(st.nextToken());
		
		max = Integer.MIN_VALUE;
		min = Integer.MAX_VALUE;
		recur(1,src[0]);
		System.out.println(max);
		System.out.println(min);
	}

	private static void recur(int depth, int sum) {
		if(depth == T) {
			max = Math.max(max, sum);
			min = Math.min(min, sum);
		}
		
		for (int i = 0; i < op.length; i++) {
			if(op[i] != 0) {
				op[i]--;
				recur(depth+1, calculrator(i, sum, src[depth]));
				op[i]++;
			}
		}
		
	}

	private static int calculrator(int i, int sum, int start) {
		switch (i) {
		case 0:
			return sum + start;
		case 1:
			return sum - start;
		case 2:
			return sum * start;
		case 3:
			return sum / start;
		default:
			return 0;
		}
		
	}
	
}
반응형
저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

백준 1003 피보나치 함수 자바  (1) 2022.03.22
백준 14889 자바 스타트와 링크  (1) 2022.03.22
백준 2580 스도쿠 자바  (0) 2022.03.19
백준 9663 N-Queen 자바  (0) 2022.03.17
프로그래머스 주차요금계산 자바  (0) 2022.03.16
    '알고리즘' 카테고리의 다른 글
    • 백준 1003 피보나치 함수 자바
    • 백준 14889 자바 스타트와 링크
    • 백준 2580 스도쿠 자바
    • 백준 9663 N-Queen 자바
    은세고화
    은세고화

    티스토리툴바