지-코바

[지코바] 8회차 문제풀이

moonseok 2022. 6. 2. 22:14

1. 상수님 문제 - 2xn타일링

import java.util.Scanner;

public class tiling {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int[] tileNumber = new int[n+2];
		tileNumber[1] = 1;
		tileNumber[2] = 2;
		
		for(int i = 3; i <= n; i++) {
			tileNumber[i] = (tileNumber[i-1] + tileNumber[i-2]) % 10007;
		}
		
		System.out.println(tileNumber[n] % 10007);
	}
}

 

 

2.잃어버린 괄호 - 내 문제

import java.util.Scanner;

public class lostBracket {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int sum = Integer.MAX_VALUE;
		String[] splitSubstract = sc.nextLine().split("-");
		
		for(int i = 0; i < splitSubstract.length; i++) {
			int temp = 0;
			
			String[] splitAdd = splitSubstract[i].split("\\+");
			
			for(int j = 0 ; j < splitAdd.length; j++) {
				temp += Integer.parseInt(splitAdd[j]);
			}
			
			if(sum == Integer.MAX_VALUE) {
				sum = temp;
			}else {
				sum -= temp;
			}
		}
		System.out.println(sum);
	}
}

 

 

3. 숫자 카드 2 - 지윤님 문제

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

public class card2 {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int[] numbers = new int[20000001];
		
		int N = Integer.parseInt(br.readLine());
		
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		
		for(int i = 0 ; i < N; i++) {
			numbers[Integer.parseInt(st.nextToken())+10000000]++;
		}
		
		int M = Integer.parseInt(br.readLine());
		
		st= new StringTokenizer(br.readLine()," ");
		
		StringBuilder sb = new StringBuilder();

		for(int j = 0; j < M; j++) {
			sb.append(numbers[Integer.parseInt(st.nextToken())+10000000]).append(" ");
		}
		System.out.println(sb);
	}
}

 

 

4. 나는야 포켓몬 마스터 이다솜 - 당님 문제

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

public class poketmon {
	
	public static HashMap<String, String> _makePoketmonList(int N, int M,BufferedReader br) throws IOException {
		
		HashMap<String, String> poketmonList = new HashMap<>();
		
		for(int i = 0; i < N; i++) {
			String name = br.readLine();
			String index = Integer.toString(i+1);
			poketmonList.put(name, index);
			poketmonList.put(index, name);
		}
		
		return poketmonList;
	}

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		HashMap<String, String> poketmonList = _makePoketmonList(N, M, br);
		
		
		StringBuilder sb = new StringBuilder(M);
		
		for(int j = 0; j < M; j++) {
			sb.append(poketmonList.get(br.readLine()) + "\n");
		}
		
		System.out.println(sb);
	}
}

 

 

5. DFS와 BFS - 홍님 문제

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class dfsbfs {
	static int[][] array;
	static boolean visited[];

	public static void DFS(int V) {
		visited[V] = true;
		System.out.print(V + " ");
		
		if(V == array.length) {
			return;
		}
		
		for(int i = 0; i < array.length; i++) {
			if(array[V][i] == 1 && visited[i] == false) {
				DFS(i);
			}
		}
		
	}
	
	public static void BFS(int V) {
		Queue<Integer> queue = new LinkedList<Integer>();
		
		queue.add(V);
		visited[V] = true;
		System.out.print(V + " ");
		
		while(!queue.isEmpty()) {
			int temp = queue.poll();
			for (int i = 0 ; i < array.length; i++) {
				if(array[temp][i] == 1 && visited[i] == false) {
					queue.add(i);
					visited[i] = true;
					System.out.print(i + " ");
				}
			}
		}
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int M = sc.nextInt();
		int V = sc.nextInt();
		
		array = new int[N + 1][N + 1];
		
		for(int i = 0 ; i < M; i++) {
			int first = sc.nextInt();
			int second = sc.nextInt();
			array[first][second] = 1;
			array[second][first] = 1;
		}
		
		visited = new boolean[N + 1];
		DFS(V);
		System.out.println("");
		visited = new boolean[N + 1];
		BFS(V);
	}
}