반응형
package com.ji.beakjoon;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

/**
 * 문자열 폭발
 * @author ji
 *
 */
public class StringExplosion {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		String str = br.readLine();
		String bomb = br.readLine();
		String answer = solution(str, bomb);
		bw.write(String.valueOf((answer.length() == 0) ? "FRULA" : answer) + "\n");

		br.close();
		bw.flush();
		bw.close();
	}

	private static String solution(String str, String bomb) {
		char[] result = new char[str.length()];
		int idx = 0;
		for (int i = 0; i < str.length(); i++) {
			result[idx] = str.charAt(i);
			//폭발할 문자열이 나타나면 하나씩 증가하면 인덱스를 
			//검증할 문자열 길이 만큼 감소 시켜 감을 넣게된다.
			if (isBomb(result, idx, bomb))
				idx -= bomb.length();
			idx++;
		}
		return String.valueOf(result, 0, idx);
	}

	private static boolean isBomb(char[] result, int idx, String bomb) {
		if (idx < bomb.length() - 1)
			return false;
		for (int i = 0; i < bomb.length(); i++) {
			int resultIndex = idx - bomb.length() + 1 + i;
			//검증할 문자열 길이 만큼의 index와 result의 저장된 문자열이 같은지 검사
			//첫번째 문자열이 다르면 loop탈출
			if (bomb.charAt(i) != result[resultIndex])
				return false;
		}
		return true;
	}

}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 트리순회  (0) 2021.06.20
[백준] 구슬탈출 4 for JAVA  (0) 2021.06.20
[백준] 듣보잡  (0) 2021.06.13
[백준] 토마토  (0) 2021.06.13
[백준] 주식투자  (0) 2021.06.13
반응형
package com.ji.beakjoon;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 듣보잡
 * @author ji
 *
 */
public class NoLookHear {

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		String[] noLookHearCountStr = br.readLine().split(" ");
		
		int noHearPersonCnt = Integer.valueOf(noLookHearCountStr[0]);
		int noLookPersonCnt = Integer.valueOf(noLookHearCountStr[1]);
		
		List<String> noHearNamesList = new ArrayList<String>();
		List<String> noLookHearList = new ArrayList<String>();
		
		for(int i=0; i<noHearPersonCnt; i++) 
			noHearNamesList.add(br.readLine());
		
		//정렬한 데이터가 검색 속도가 더 빠름
		//순차 접근시 O(n), 이진 트리 검색시 O(logN)
		Collections.sort(noHearNamesList);
		
		//이진 검색 트리 사용을 위한 List to Array
		String[] noHearNamesArr = new String[noHearNamesList.size()];
		noHearNamesArr = noHearNamesList.toArray(noHearNamesArr);
		
		for(int i=0; i<noLookPersonCnt; i++) {
			String name =br.readLine();
			if(Arrays.binarySearch(noHearNamesArr, name)>=0) //POINT!!!
				noLookHearList.add(name);
		}
		
		//문제에서 사전순 요구함
		Collections.sort(noLookHearList);
		bw.write(String.valueOf(noLookHearList.size())+"\n");
		
		for(String name:noLookHearList)
			bw.write(String.valueOf(name)+"\n");

		br.close();
		bw.flush();
		bw.close();
	}
}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 구슬탈출 4 for JAVA  (0) 2021.06.20
[백준] 문자열 폭발  (0) 2021.06.13
[백준] 토마토  (0) 2021.06.13
[백준] 주식투자  (0) 2021.06.13
[백준] 유기농 배추  (0) 2021.06.13
반응형
package com.ji.beakjoon;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

/**
 * 토마토
 * @author ji
 *
 */
public class Tomato {

	public static void main(String[] args) throws IOException {
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        Scanner sc = new Scanner(System.in);
        int[] dy = { -1, 1, 0, 0 };//상하좌우위아래
        int[] dx = { 0, 0, -1, 1 };
        int M = sc.nextInt(), N = sc.nextInt();

        int[][] tomato = new int[N][M];
        int cnt = 0, days = 0;
        Queue<int[]> que = new LinkedList<>();

        //행렬값 초기화
        for (int n = 0; n < N; n++) {
            for (int m = 0; m < M; m++) {
                tomato[n][m] = sc.nextInt();
                //시작 노드를 큐에 넣음
                if (tomato[n][m] == 1) {
                    que.add(new int[] { n, m });
                }else if (tomato[n][m] == 0) {
                	//익지 않은 토마토 개수 
                    cnt++;
                }
            }
        }

        //익지 않은 토마토 가 있고, 큐에 노드가 있으면
        while (cnt > 0 && !que.isEmpty()) {
            for (int s = que.size(); s > 0; s--) {
                int[] cur = que.poll();//익은 토마토 위치

                //상하좌우아래 검사
                for (int k = 0; k < 4; k++) {
                    int ny = cur[0] + dy[k]; //가로
                    int nx = cur[1] + dx[k]; //세로

                    //익은 토마토만 통과
                    if (ny < 0 || nx < 0 || ny >= N || nx >= M || tomato[ny][nx] != 0)
                        continue;
                               
                    cnt--;
                    tomato[ny][nx] = 1;
                    //익은 토마토 큐에 저장
                    que.add(new int[] { ny, nx });
                }
            }
            //날짜 증가
            days++;
        }
        
        String result = String.valueOf(cnt == 0 ? days : -1);
        bw.write(String.valueOf(result) + "\n");
        bw.flush();
		bw.close();
    }

}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 문자열 폭발  (0) 2021.06.13
[백준] 듣보잡  (0) 2021.06.13
[백준] 주식투자  (0) 2021.06.13
[백준] 유기농 배추  (0) 2021.06.13
[백준] 숨바꼭질  (0) 2021.06.13

+ Recent posts