본문 바로가기

알고리즘/백준

[백준] 1248 맞춰봐

문제링크 : www.acmicpc.net/problem/1248

 

1248번: 맞춰봐

규현이는 멍청하다. 왜냐하면, 1~10까지 수 밖에 모르기 때문이다. 어느 날 규현이 옆을 지나가던 태석이가 규현이를 보고 이렇게 외쳤다. "빵빵!!" 규현이는 "아하!" 하면서 세상에는 빵이란 수도

www.acmicpc.net

 

import java.io.*;
import java.util.*;
public class Main {
	public static int N;
	public static int ans[];
	public static boolean visited [][];
	public static String query;
	public static int len;
	public static char str[][];
	public static boolean check(int idx){
		int sum = 0;
		for(int i=idx;i>=0;i--){
			sum+=ans[i];
			if(str[i][idx]=='+' && sum<=0) return false;
			if(str[i][idx]=='0' && sum!=0) return false;
			if(str[i][idx]=='-' && sum>=0) return false;
		}
		return true;
	}
	public static void dfs(int idx){
		if(idx==N){
			for(int i=0;i<N;i++){
				System.out.print(ans[i] + " ");
				
			}
			System.exit(0);
		}
		for(int i=-10;i<=10;i++){
			ans[idx] = i;
			if(check(idx)){
				dfs(idx+1);
			}
			
		}
		
	}
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		ans  = new int[N];
		visited = new boolean[11][22]; //N번째 원소, 21개의 수
		query = br.readLine();
		len = N*(N-1)/2;
		str = new char[N][N];
		int temp = 0;
		for(int i=0;i<N;i++){
			for(int j=i;j<N;j++){
				str[i][j] = query.charAt(temp++); 
			}
		}
		dfs(0);
	}

}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1948 임계경로  (0) 2021.03.24
[백준] 13424 비밀 모임 [JAVA]  (0) 2021.03.22
[백준] 2023 신기한 소수  (0) 2021.02.24
[백준] 2169 로봇 조종하기[JAVA]  (5) 2021.02.24
[백준] 14267 회사 문화1  (0) 2021.02.15