diff --git a/.gitignore b/.gitignore
index 2a7c3a7..dd12c82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,5 @@ bin/
build/**
src/main/resources/application.properties
+
+**/**.iml
\ No newline at end of file
diff --git a/README.md b/README.md
index cd7c688..1eb0a1a 100644
--- a/README.md
+++ b/README.md
@@ -2,21 +2,30 @@
# 알고리즘
- bfs
- - [BFS 예시 코드](https://github.com/programofktw/AlgorithmStudy/pull/127)
- -
+ - [BFS 코드 구현](https://github.com/programofktw/AlgorithmStudy/pull/127)
+ - 트리 BFS
+ - 2차원 배열 BFS
+ - 우선순위 bfs 정리
- dfs
- - [DFS 예시 코드](https://github.com/programofktw/AlgorithmStudy/pull/134)
+ - [DFS 코드 구현](https://github.com/programofktw/AlgorithmStudy/pull/134)
- pre, in, post Oder
- - [전위 중위 후위 순회 예시 코드](https://github.com/programofktw/AlgorithmStudy/pull/136)
+ - [전위 중위 후위 순회 코드 구현](https://github.com/programofktw/AlgorithmStudy/pull/136)
# 자료구조
## List
- AraryList
+ - [ArrayList 구현](https://github.com/programofktw/AlgorithmStudy/pull/123)
- LinkedList
## Map
- ListMap
+ - [ListMap 구현](https://github.com/programofktw/AlgorithmStudy/pull/131)
+
- HashMap
- [HashMap 구현](https://github.com/programofktw/AlgorithmStudy/pull/135)
+
+
+
+
diff --git a/algorithmStudy.iml b/algorithmStudy.iml
deleted file mode 100644
index 245d342..0000000
--- a/algorithmStudy.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index d9d4892..0000000
--- a/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-plugins {
- id 'java'
-}
-
-group 'org.example'
-version '1.0'
-
-repositories {
- mavenCentral()
-}
-
-dependencies {
- testImplementation 'org.junit.jupiter:junit-jupiter:5.10.0'
-}
-
-test {
- useJUnitPlatform()
-}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
deleted file mode 100644
index a4b76b9..0000000
Binary files a/gradle/wrapper/gradle-wrapper.jar and /dev/null differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
deleted file mode 100644
index 9355b41..0000000
--- a/gradle/wrapper/gradle-wrapper.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-distributionBase=GRADLE_USER_HOME
-distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip
-networkTimeout=10000
-validateDistributionUrl=true
-zipStoreBase=GRADLE_USER_HOME
-zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
deleted file mode 100644
index f5feea6..0000000
--- a/gradlew
+++ /dev/null
@@ -1,252 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright © 2015-2021 the original authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# https://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-# SPDX-License-Identifier: Apache-2.0
-#
-
-##############################################################################
-#
-# Gradle start up script for POSIX generated by Gradle.
-#
-# Important for running:
-#
-# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
-# noncompliant, but you have some other compliant shell such as ksh or
-# bash, then to run this script, type that shell name before the whole
-# command line, like:
-#
-# ksh Gradle
-#
-# Busybox and similar reduced shells will NOT work, because this script
-# requires all of these POSIX shell features:
-# * functions;
-# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
-# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
-# * compound commands having a testable exit status, especially «case»;
-# * various built-in commands including «command», «set», and «ulimit».
-#
-# Important for patching:
-#
-# (2) This script targets any POSIX shell, so it avoids extensions provided
-# by Bash, Ksh, etc; in particular arrays are avoided.
-#
-# The "traditional" practice of packing multiple parameters into a
-# space-separated string is a well documented source of bugs and security
-# problems, so this is (mostly) avoided, by progressively accumulating
-# options in "$@", and eventually passing that to Java.
-#
-# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
-# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
-# see the in-line comments for details.
-#
-# There are tweaks for specific operating systems such as AIX, CygWin,
-# Darwin, MinGW, and NonStop.
-#
-# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
-# within the Gradle project.
-#
-# You can find Gradle at https://github.com/gradle/gradle/.
-#
-##############################################################################
-
-# Attempt to set APP_HOME
-
-# Resolve links: $0 may be a link
-app_path=$0
-
-# Need this for daisy-chained symlinks.
-while
- APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
- [ -h "$app_path" ]
-do
- ls=$( ls -ld "$app_path" )
- link=${ls#*' -> '}
- case $link in #(
- /*) app_path=$link ;; #(
- *) app_path=$APP_HOME$link ;;
- esac
-done
-
-# This is normally unused
-# shellcheck disable=SC2034
-APP_BASE_NAME=${0##*/}
-# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
-' "$PWD" ) || exit
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD=maximum
-
-warn () {
- echo "$*"
-} >&2
-
-die () {
- echo
- echo "$*"
- echo
- exit 1
-} >&2
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-nonstop=false
-case "$( uname )" in #(
- CYGWIN* ) cygwin=true ;; #(
- Darwin* ) darwin=true ;; #(
- MSYS* | MINGW* ) msys=true ;; #(
- NONSTOP* ) nonstop=true ;;
-esac
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD=$JAVA_HOME/jre/sh/java
- else
- JAVACMD=$JAVA_HOME/bin/java
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD=java
- if ! command -v java >/dev/null 2>&1
- then
- die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-fi
-
-# Increase the maximum file descriptors if we can.
-if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
- case $MAX_FD in #(
- max*)
- # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC2039,SC3045
- MAX_FD=$( ulimit -H -n ) ||
- warn "Could not query maximum file descriptor limit"
- esac
- case $MAX_FD in #(
- '' | soft) :;; #(
- *)
- # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
- # shellcheck disable=SC2039,SC3045
- ulimit -n "$MAX_FD" ||
- warn "Could not set maximum file descriptor limit to $MAX_FD"
- esac
-fi
-
-# Collect all arguments for the java command, stacking in reverse order:
-# * args from the command line
-# * the main class name
-# * -classpath
-# * -D...appname settings
-# * --module-path (only if needed)
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
-
-# For Cygwin or MSYS, switch paths to Windows format before running java
-if "$cygwin" || "$msys" ; then
- APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
- CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
-
- JAVACMD=$( cygpath --unix "$JAVACMD" )
-
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- for arg do
- if
- case $arg in #(
- -*) false ;; # don't mess with options #(
- /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
- [ -e "$t" ] ;; #(
- *) false ;;
- esac
- then
- arg=$( cygpath --path --ignore --mixed "$arg" )
- fi
- # Roll the args list around exactly as many times as the number of
- # args, so each arg winds up back in the position where it started, but
- # possibly modified.
- #
- # NB: a `for` loop captures its iteration list before it begins, so
- # changing the positional parameters here affects neither the number of
- # iterations, nor the values presented in `arg`.
- shift # remove old arg
- set -- "$@" "$arg" # push replacement arg
- done
-fi
-
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
-
-# Collect all arguments for the java command:
-# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
-# and any embedded shellness will be escaped.
-# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
-# treated as '${Hostname}' itself on the command line.
-
-set -- \
- "-Dorg.gradle.appname=$APP_BASE_NAME" \
- -classpath "$CLASSPATH" \
- org.gradle.wrapper.GradleWrapperMain \
- "$@"
-
-# Stop when "xargs" is not available.
-if ! command -v xargs >/dev/null 2>&1
-then
- die "xargs is not available"
-fi
-
-# Use "xargs" to parse quoted args.
-#
-# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
-#
-# In Bash we could simply go:
-#
-# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
-# set -- "${ARGS[@]}" "$@"
-#
-# but POSIX shell has neither arrays nor command substitution, so instead we
-# post-process each arg (as a line of input to sed) to backslash-escape any
-# character that might be a shell metacharacter, then use eval to reverse
-# that process (while maintaining the separation between arguments), and wrap
-# the whole thing up as a single "set" statement.
-#
-# This will of course break if any of these variables contains a newline or
-# an unmatched quote.
-#
-
-eval "set -- $(
- printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
- xargs -n1 |
- sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
- tr '\n' ' '
- )" '"$@"'
-
-exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
deleted file mode 100644
index 9d21a21..0000000
--- a/gradlew.bat
+++ /dev/null
@@ -1,94 +0,0 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-@rem SPDX-License-Identifier: Apache-2.0
-@rem
-
-@if "%DEBUG%"=="" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if %ERRORLEVEL% equ 0 goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo. 1>&2
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
-echo. 1>&2
-echo Please set the JAVA_HOME variable in your environment to match the 1>&2
-echo location of your Java installation. 1>&2
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if %ERRORLEVEL% equ 0 goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-set EXIT_CODE=%ERRORLEVEL%
-if %EXIT_CODE% equ 0 set EXIT_CODE=1
-if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
-exit /b %EXIT_CODE%
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
diff --git a/src/.idea/.gitignore b/src/.idea/.gitignore
new file mode 100644
index 0000000..c3f502a
--- /dev/null
+++ b/src/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 디폴트 무시된 파일
+/shelf/
+/workspace.xml
+# 에디터 기반 HTTP 클라이언트 요청
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/src/.idea/misc.xml b/src/.idea/misc.xml
new file mode 100644
index 0000000..07115cd
--- /dev/null
+++ b/src/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/modules.xml b/src/.idea/modules.xml
new file mode 100644
index 0000000..23f37a8
--- /dev/null
+++ b/src/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/.idea/vcs.xml b/src/.idea/vcs.xml
new file mode 100644
index 0000000..6c0b863
--- /dev/null
+++ b/src/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon1002.java b/src/baekjoon/baekJoon/BaekJoon1002.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon1002.java
rename to src/baekjoon/baekJoon/BaekJoon1002.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon1003.java b/src/baekjoon/baekJoon/BaekJoon1003.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon1003.java
rename to src/baekjoon/baekJoon/BaekJoon1003.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon1152.java b/src/baekjoon/baekJoon/BaekJoon1152.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon1152.java
rename to src/baekjoon/baekJoon/BaekJoon1152.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon1237.java b/src/baekjoon/baekJoon/BaekJoon1237.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon1237.java
rename to src/baekjoon/baekJoon/BaekJoon1237.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon1308.java b/src/baekjoon/baekJoon/BaekJoon1308.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon1308.java
rename to src/baekjoon/baekJoon/BaekJoon1308.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon16719.java b/src/baekjoon/baekJoon/BaekJoon16719.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon16719.java
rename to src/baekjoon/baekJoon/BaekJoon16719.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon2508.java b/src/baekjoon/baekJoon/BaekJoon2508.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon2508.java
rename to src/baekjoon/baekJoon/BaekJoon2508.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon2668.java b/src/baekjoon/baekJoon/BaekJoon2668.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon2668.java
rename to src/baekjoon/baekJoon/BaekJoon2668.java
diff --git a/src/main/java/baekjoon/baekJoon/BaekJoon9494.java b/src/baekjoon/baekJoon/BaekJoon9494.java
similarity index 100%
rename from src/main/java/baekjoon/baekJoon/BaekJoon9494.java
rename to src/baekjoon/baekJoon/BaekJoon9494.java
diff --git a/src/baekjoon/bronze/B10102.java b/src/baekjoon/bronze/B10102.java
new file mode 100644
index 0000000..0c70865
--- /dev/null
+++ b/src/baekjoon/bronze/B10102.java
@@ -0,0 +1,56 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class B10102 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+// br.readLine();
+//
+// String st = br.readLine();
+//
+// int total = st.length();
+//
+// st = st.replace("A","");
+//
+// int BNum = st.length();
+//
+// double mid = (double)total/2;
+//
+// if(mid>BNum){
+// sb.append("A");
+// }else if(mid == BNum){
+// sb.append("Tie");
+// }else{
+// sb.append("B");
+// }
+//
+// System.out.print(sb);
+ br.readLine();
+
+ String s = br.readLine();
+
+ int count=0;
+
+ for(int i =0;i0)?"A":"B");
+ }
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/baekjoon/bronze/B1037.java b/src/baekjoon/bronze/B1037.java
new file mode 100644
index 0000000..f5b9f4e
--- /dev/null
+++ b/src/baekjoon/bronze/B1037.java
@@ -0,0 +1,43 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.PriorityQueue;
+
+public class B1037 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int N = Integer.parseInt(br.readLine());
+
+ String[] inputs = br.readLine().split(" ");
+
+
+ long min = Long.MAX_VALUE;
+
+ long max = Long.MIN_VALUE;
+
+ for(String input : inputs){
+ long now = Long.parseLong(input);
+
+ if(min>now) min = now;
+ if(max=97){
+ sb.append("A+");
+ }else if(score>=90){
+ sb.append("A");
+ }else if(score>=87){
+ sb.append("B+");
+ }else if(score>=80){
+ sb.append("B");
+ }else if(score>=77){
+ sb.append("C+");
+ }else if(score>=70){
+ sb.append("C");
+ }else if(score>=67){
+ sb.append("D+");
+ }else if(score>=60){
+ sb.append("D");
+ }else{
+ sb.append("F");
+ }
+ sb.append("\n");
+
+
+ }
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B11549.java b/src/baekjoon/bronze/B11549.java
new file mode 100644
index 0000000..e5c18a9
--- /dev/null
+++ b/src/baekjoon/bronze/B11549.java
@@ -0,0 +1,30 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class B11549 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int correct = Integer.parseInt(br.readLine());
+
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ int result = 0;
+
+ while (st.hasMoreTokens()) {
+ result += (correct==Integer.parseInt(st.nextToken()))?1:0;
+ }
+
+ sb.append(result);
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/baekjoon/bronze/B11874.java b/src/baekjoon/bronze/B11874.java
new file mode 100644
index 0000000..f4bc348
--- /dev/null
+++ b/src/baekjoon/bronze/B11874.java
@@ -0,0 +1,54 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B11874 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int L = Integer.parseInt(br.readLine());
+
+ int D = Integer.parseInt(br.readLine());
+
+ int X = Integer.parseInt(br.readLine());
+
+ boolean first = true;
+
+ int max = 0;
+
+ for (int i = L; i <=D;i++ ){
+ if(X==sum(i)){
+ if(first){
+ sb.append(i);
+ first = false;
+ max = i;
+ }else{
+ max = i;
+ }
+ }
+ }
+
+ sb.append("\n").append(max);
+
+ System.out.print(sb);
+ }
+
+
+ static int sum(int a){
+ int result = 0;
+
+ int na = 10000;
+
+ while(true){
+ result += a/na;
+ a = a%na;
+ na /= 10;
+ if(a==0) return result;
+ }
+ }
+}
diff --git a/src/baekjoon/bronze/B13420.java b/src/baekjoon/bronze/B13420.java
new file mode 100644
index 0000000..92f1595
--- /dev/null
+++ b/src/baekjoon/bronze/B13420.java
@@ -0,0 +1,57 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B13420 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ for(int i = 0; i < n; i++) {
+ String[] input = br.readLine().split(" ");
+
+ long a = Long.parseLong(input[0]);
+
+ char op = input[1].charAt(0);
+
+ long b = Long.parseLong(input[2]);
+
+ char equal = input[3].charAt(0);
+
+ long result = Long.parseLong(input[4]);
+
+ long exp = 0;
+
+ switch(op){
+ case '+':
+ exp = a+b;
+ break;
+ case '-' :
+ exp = a-b;
+ break;
+ case '*':
+ exp = a*b;
+ break;
+ case '/':
+ exp = a/b;
+ break;
+ }
+
+ if(result == exp){
+ sb.append("correct\n");
+ }else{
+ sb.append("wrong answer\n");
+ }
+
+
+ }
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/baekjoon/bronze/B14656.java b/src/baekjoon/bronze/B14656.java
new file mode 100644
index 0000000..922f8a6
--- /dev/null
+++ b/src/baekjoon/bronze/B14656.java
@@ -0,0 +1,33 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B14656 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
+
+ int result = 0;
+
+ for(int i = 1 ; i <= n;i++){
+ if(i!=input[i-1]) result++;
+ }
+
+ sb.append(result);
+
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/baekjoon/bronze/B15439.java b/src/baekjoon/bronze/B15439.java
new file mode 100644
index 0000000..f1b6662
--- /dev/null
+++ b/src/baekjoon/bronze/B15439.java
@@ -0,0 +1,13 @@
+package baekjoon.bronze;
+
+import java.util.Scanner;
+
+public class B15439 {
+ public static void main(String[] args){
+ Scanner sc = new Scanner(System.in);
+ int n = sc.nextInt();
+
+ System.out.print(n*(n-1));
+ }
+
+}
diff --git a/src/baekjoon/bronze/B15881.java b/src/baekjoon/bronze/B15881.java
new file mode 100644
index 0000000..6a83824
--- /dev/null
+++ b/src/baekjoon/bronze/B15881.java
@@ -0,0 +1,45 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B15881 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ String input = br.readLine();
+
+ char[] pPAp = {'p','P','A','p'};
+
+ int now = 0;
+
+ int result =0;
+
+ for(char cha : input.toCharArray()){
+ if(cha==pPAp[now]){
+ now++;
+ }else{
+ if(cha==pPAp[0])
+ now=1;
+ else
+ now=0;
+ }
+
+ if(now==4){
+ result++;
+ now=0;
+ }
+ }
+
+ sb.append(result);
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B15953.java b/src/baekjoon/bronze/B15953.java
new file mode 100644
index 0000000..2593dd8
--- /dev/null
+++ b/src/baekjoon/bronze/B15953.java
@@ -0,0 +1,56 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B15953 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int N = Integer.parseInt(br.readLine());
+
+ for(int i=0;i=A&&i<=B){
+ count++;
+ }
+ }
+
+ if(count==0){
+ sb.append("IMPOSSIBLE");
+ }else{
+ sb.append(count);
+ }
+
+ System.out.print(sb);
+
+ }
+
+}
diff --git a/src/baekjoon/bronze/B3034.java b/src/baekjoon/bronze/B3034.java
new file mode 100644
index 0000000..668c518
--- /dev/null
+++ b/src/baekjoon/bronze/B3034.java
@@ -0,0 +1,34 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B3034 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ String[] input = br.readLine().split(" ");
+
+ int n = Integer.parseInt(input[0]);
+ int w = Integer.parseInt(input[1]);
+ int h = Integer.parseInt(input[2]);
+
+ int max = w*w + h*h;
+
+ for(int i = 0; i < n; i++) {
+ int x = Integer.parseInt(br.readLine());
+
+ if(max >= x*x){
+ sb.append("DA").append("\n");
+ }else{
+ sb.append("NE").append("\n");
+ }
+
+ }
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/baekjoon/bronze/B30676.java b/src/baekjoon/bronze/B30676.java
new file mode 100644
index 0000000..7b6098e
--- /dev/null
+++ b/src/baekjoon/bronze/B30676.java
@@ -0,0 +1,34 @@
+package baekjoon.bronze;
+
+import java.util.Scanner;
+
+public class B30676 {
+ public static void main(String[] args){
+ Scanner sc = new Scanner(System.in);
+
+ int n = sc.nextInt();
+
+ if(n<=780&&n>=620){
+ System.out.println("Red");
+ }
+ else if(n<620&&n>=590){
+ System.out.println("Orange");
+ }
+ else if(n<590&&n>=570){
+ System.out.println("Yellow");
+ }
+ else if(n<570&&n>=495){
+ System.out.println("Green");
+ }
+ else if(n<495&&n>=450){
+ System.out.println("Blue");
+ }
+ else if(n<450&&n>=425){
+ System.out.println("Indigo");
+ }
+ else if(n<425&&n>=380){
+ System.out.println("Violet");
+ }
+ }
+
+}
diff --git a/src/baekjoon/bronze/B31450.java b/src/baekjoon/bronze/B31450.java
new file mode 100644
index 0000000..03fe56b
--- /dev/null
+++ b/src/baekjoon/bronze/B31450.java
@@ -0,0 +1,17 @@
+package baekjoon.bronze;
+
+import java.util.Scanner;
+
+public class B31450 {
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+
+ int M = sc.nextInt();
+
+ int K = sc.nextInt();
+
+ System.out.print((M%K)==0?"Yes":"No");
+ }
+
+}
diff --git a/src/baekjoon/bronze/B31746.java b/src/baekjoon/bronze/B31746.java
new file mode 100644
index 0000000..7794c88
--- /dev/null
+++ b/src/baekjoon/bronze/B31746.java
@@ -0,0 +1,25 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B31746 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ long n = Long.parseLong(br.readLine());
+
+ if(n%2==0){
+ sb.append("SciComLove");
+ }else{
+ sb.append("evoLmoCicS");
+ }
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/baekjoon/bronze/B33178.java b/src/baekjoon/bronze/B33178.java
new file mode 100644
index 0000000..f4fe01d
--- /dev/null
+++ b/src/baekjoon/bronze/B33178.java
@@ -0,0 +1,21 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B33178 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args)throws IOException {
+ int input = Integer.parseInt(br.readLine());
+
+ sb.append(input/10);
+
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B34281.java b/src/baekjoon/bronze/B34281.java
new file mode 100644
index 0000000..e051d2b
--- /dev/null
+++ b/src/baekjoon/bronze/B34281.java
@@ -0,0 +1,21 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B34281 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int w = Integer.parseInt(br.readLine());
+ int h = Integer.parseInt(br.readLine());
+
+ sb.append(w*h);
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B34362.java b/src/baekjoon/bronze/B34362.java
new file mode 100644
index 0000000..61fcd23
--- /dev/null
+++ b/src/baekjoon/bronze/B34362.java
@@ -0,0 +1,22 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B34362 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ double a = Double.parseDouble(br.readLine());
+
+ double result = a- 0.3;
+
+ sb.append(result);
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/baekjoon/bronze/B34721.java b/src/baekjoon/bronze/B34721.java
new file mode 100644
index 0000000..e451053
--- /dev/null
+++ b/src/baekjoon/bronze/B34721.java
@@ -0,0 +1,17 @@
+package baekjoon.bronze;
+
+import java.util.Scanner;
+
+public class B34721 {
+ public static void main(String[] args){
+ Scanner scan = new Scanner(System.in);
+
+ int i=scan.nextInt();
+
+ while(i-- != 0){
+ System.out.println("I love DGU");
+ }
+
+ scan.close();
+ }
+}
diff --git a/src/baekjoon/bronze/B34849.java b/src/baekjoon/bronze/B34849.java
new file mode 100644
index 0000000..ae5b019
--- /dev/null
+++ b/src/baekjoon/bronze/B34849.java
@@ -0,0 +1,28 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B34849 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ long n = Long.parseLong(br.readLine());
+
+ long pow = n * n;
+
+ if(pow<=100000000){
+ sb.append("Accepted");
+ }else{
+ sb.append("Time limit exceeded");
+ }
+
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B34945.java b/src/baekjoon/bronze/B34945.java
new file mode 100644
index 0000000..e214adb
--- /dev/null
+++ b/src/baekjoon/bronze/B34945.java
@@ -0,0 +1,22 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B34945 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int N = Integer.parseInt(br.readLine());
+
+ sb.append((N>=6)?"Success!":"Oh My God!");
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/baekjoon/bronze/B3533.java b/src/baekjoon/bronze/B3533.java
new file mode 100644
index 0000000..8e99069
--- /dev/null
+++ b/src/baekjoon/bronze/B3533.java
@@ -0,0 +1,44 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class B3533 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ String[] input = br.readLine().split(" ");
+
+ boolean[] bit = new boolean[10];
+
+ for(int i = 0; i < bit.length; i++){
+ bit[i] = input[i].equals("1");
+ }
+
+ boolean result = false;
+
+ for(int i= 0; i < bit.length; i++){
+ boolean temp;
+ for(int j = i+1 ; j < bit.length ; j++){
+ temp = bit[i] || bit[j];
+
+ result = (temp&&!result ||!temp&&result);
+
+ for(int k = j+1 ; k < bit.length ;k++){
+ temp = bit[i]||bit[j] || bit[k];
+
+ result = (temp&&!result ||!temp&&result);
+ }
+ }
+ }
+
+ sb.append(result?1:0);
+
+ System.out.println(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B4619.java b/src/baekjoon/bronze/B4619.java
new file mode 100644
index 0000000..4f35379
--- /dev/null
+++ b/src/baekjoon/bronze/B4619.java
@@ -0,0 +1,39 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B4619 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+
+ while(true){
+ int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
+ if(input[0] ==0 && input[1]==0) break;
+
+ int i = 0;
+
+ while(Math.pow(i,input[1])input[0]-Math.pow((i-1),input[1])){
+ i--;
+ }
+ sb.append(i).append("\n");
+ }
+
+
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/baekjoon/bronze/B5074.java b/src/baekjoon/bronze/B5074.java
new file mode 100644
index 0000000..07cc0d6
--- /dev/null
+++ b/src/baekjoon/bronze/B5074.java
@@ -0,0 +1,59 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B5074 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ while(true){
+ String[] inputs = br.readLine().split(" ");
+
+ if(inputs[0].equals("00:00")&&inputs[1].equals("00:00")) break;
+
+ String[] first = inputs[0].split(":");
+
+ String[] second = inputs[1].split(":");
+
+ int h1 = Integer.parseInt(first[0]);
+ int m1 = Integer.parseInt(first[1]);
+
+ int h2 = Integer.parseInt(second[0]);
+ int m2 = Integer.parseInt(second[1]);
+
+ int rh = 0;
+ int rm =0;
+
+ rh = h1 + h2;
+ rm = m2 + m1;
+
+ boolean overDay = false;
+
+ if(rm>=60){
+ rh++;
+ rm-=60;
+ }
+
+ int day =0;
+
+
+ if(rh>=24){
+ overDay= true;
+ day = rh / 24;
+ rh %= 24;
+
+ }
+
+ sb.append(String.format("%02d",rh)).append(":").append(String.format("%02d",rm)).append((overDay)?" +"+day:"").append("\n");
+ }
+
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B5358.java b/src/baekjoon/bronze/B5358.java
new file mode 100644
index 0000000..a0db2c3
--- /dev/null
+++ b/src/baekjoon/bronze/B5358.java
@@ -0,0 +1,39 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B5358 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int iegap = 'i'-'e';
+
+ while(true){
+ String input = br.readLine();
+
+ if(input==null){
+ break;
+ }
+
+ for(char now : input.toCharArray()){
+ if(now == 'i' || now == 'I'){
+ sb.append((char)(now-iegap));
+ }else if(now=='e'||now=='E'){
+ sb.append(((char)(now+iegap)));
+ }else{
+ sb.append(now);
+ }
+ }
+ sb.append("\n");
+ }
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/bronze/B6996.java b/src/baekjoon/bronze/B6996.java
new file mode 100644
index 0000000..e5acdb4
--- /dev/null
+++ b/src/baekjoon/bronze/B6996.java
@@ -0,0 +1,44 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B6996 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int testCase = Integer.parseInt(br.readLine());
+
+ A : for(int i = 0; i < testCase; i++) {
+ String[] input = br.readLine().split(" ");
+ int size = 'z' - 'a'+1;
+ int[] arr1 = new int[size];
+ int[] arr2 = new int[size];
+ sb.append(input[0]).append(" & ").append(input[1]).append(" are ");
+ boolean result = false;
+
+ for(char ch : input[0].toCharArray()) {
+ arr1[ch - 'a']++;
+ }
+
+ for(char ch : input[1].toCharArray()) {
+ arr2[ch- 'a']++;
+ }
+
+ for(int j = 0 ; j < size;j++){
+ if(arr1[j]!=arr2[j]){
+ sb.append("NOT anagrams.").append("\n");
+ continue A;
+ }
+ }
+ sb.append("anagrams.").append("\n");
+ }
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/baekjoon/bronze/B9316.java b/src/baekjoon/bronze/B9316.java
new file mode 100644
index 0000000..3bd159f
--- /dev/null
+++ b/src/baekjoon/bronze/B9316.java
@@ -0,0 +1,23 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B9316 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ for(int i = 1 ;i<=n;i++){
+ sb.append(String.format("Hello World, Judge %d!",i)).append("\n");
+ }
+
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/main/java/baekjoon/bronze/BackJoon15740.java b/src/baekjoon/bronze/BackJoon15740.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BackJoon15740.java
rename to src/baekjoon/bronze/BackJoon15740.java
diff --git a/src/baekjoon/bronze/BaekJoo21300.java b/src/baekjoon/bronze/BaekJoo21300.java
new file mode 100644
index 0000000..09527b3
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoo21300.java
@@ -0,0 +1,16 @@
+package baekjoon.bronze;
+
+import java.util.Scanner;
+
+public class BaekJoo21300 {
+ public static void main(String[] args) {
+ Scanner scanner = new Scanner(System.in);
+
+ int result = 0;
+ for (int i = 0; i < 6; i++) {
+ result += scanner.nextInt();
+ }
+
+ System.out.print(result * 5);
+ }
+}
diff --git a/src/main/java/baekjoon/bronze/BaekJoon1009.java b/src/baekjoon/bronze/BaekJoon1009.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon1009.java
rename to src/baekjoon/bronze/BaekJoon1009.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon10170.java b/src/baekjoon/bronze/BaekJoon10170.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon10170.java
rename to src/baekjoon/bronze/BaekJoon10170.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon1032.java b/src/baekjoon/bronze/BaekJoon1032.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon1032.java
rename to src/baekjoon/bronze/BaekJoon1032.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon10757.java b/src/baekjoon/bronze/BaekJoon10757.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon10757.java
rename to src/baekjoon/bronze/BaekJoon10757.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon10807.java b/src/baekjoon/bronze/BaekJoon10807.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon10807.java
rename to src/baekjoon/bronze/BaekJoon10807.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon10872.java b/src/baekjoon/bronze/BaekJoon10872.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon10872.java
rename to src/baekjoon/bronze/BaekJoon10872.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon10984.java b/src/baekjoon/bronze/BaekJoon10984.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon10984.java
rename to src/baekjoon/bronze/BaekJoon10984.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon11021.java b/src/baekjoon/bronze/BaekJoon11021.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon11021.java
rename to src/baekjoon/bronze/BaekJoon11021.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon11022.java b/src/baekjoon/bronze/BaekJoon11022.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon11022.java
rename to src/baekjoon/bronze/BaekJoon11022.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon11117.java b/src/baekjoon/bronze/BaekJoon11117.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon11117.java
rename to src/baekjoon/bronze/BaekJoon11117.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon11718.java b/src/baekjoon/bronze/BaekJoon11718.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon11718.java
rename to src/baekjoon/bronze/BaekJoon11718.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon11942.java b/src/baekjoon/bronze/BaekJoon11942.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon11942.java
rename to src/baekjoon/bronze/BaekJoon11942.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon1231231231.java b/src/baekjoon/bronze/BaekJoon1231231231.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon1231231231.java
rename to src/baekjoon/bronze/BaekJoon1231231231.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon1236.java b/src/baekjoon/bronze/BaekJoon1236.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon1236.java
rename to src/baekjoon/bronze/BaekJoon1236.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon12595.java b/src/baekjoon/bronze/BaekJoon12595.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon12595.java
rename to src/baekjoon/bronze/BaekJoon12595.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon13228.java b/src/baekjoon/bronze/BaekJoon13228.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon13228.java
rename to src/baekjoon/bronze/BaekJoon13228.java
diff --git a/src/baekjoon/bronze/BaekJoon13416.java b/src/baekjoon/bronze/BaekJoon13416.java
new file mode 100644
index 0000000..26d622e
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon13416.java
@@ -0,0 +1,41 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon13416 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ public static void main(String[] args) throws IOException {
+ int testCase = Integer.parseInt(br.readLine());
+ StringBuilder sb = new StringBuilder();
+
+
+ for(int i =0;i=0)
+ result += max;
+
+ }
+
+ sb.append(result).append("\n");
+ }
+ System.out.print(sb);
+
+ }
+}
diff --git a/src/main/java/baekjoon/bronze/BaekJoon14456.java b/src/baekjoon/bronze/BaekJoon14456.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon14456.java
rename to src/baekjoon/bronze/BaekJoon14456.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon14491.java b/src/baekjoon/bronze/BaekJoon14491.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon14491.java
rename to src/baekjoon/bronze/BaekJoon14491.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon14645.java b/src/baekjoon/bronze/BaekJoon14645.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon14645.java
rename to src/baekjoon/bronze/BaekJoon14645.java
diff --git a/src/baekjoon/bronze/BaekJoon14647.java b/src/baekjoon/bronze/BaekJoon14647.java
new file mode 100644
index 0000000..39e5af1
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon14647.java
@@ -0,0 +1,51 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon14647 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ int n = Integer.parseInt(st.nextToken());
+ int m = Integer.parseInt(st.nextToken());
+
+ int[][] arr = new int[n][m];
+
+ int total9num = 0;
+ int[] rowCount = new int[n];
+ int[] colCount = new int[m];
+
+ // 입력 및 9 카운팅
+ for (int i = 0; i < n; i++) {
+ st = new StringTokenizer(br.readLine());
+ for (int j = 0; j < m; j++) {
+ String s = st.nextToken();
+ arr[i][j] = Integer.parseInt(s);
+
+ // 9의 개수 세기
+ for (char c : s.toCharArray()) {
+ if (c == '9') {
+ total9num++;
+ rowCount[i]++;
+ colCount[j]++;
+ }
+ }
+ }
+ }
+
+ // 최대 9 개수 찾기 (행/열)
+ int max9Num = 0;
+ for (int r : rowCount) max9Num = Math.max(max9Num, r);
+ for (int c : colCount) max9Num = Math.max(max9Num, c);
+
+ System.out.println(total9num - max9Num);
+ }
+}
diff --git a/src/main/java/baekjoon/bronze/BaekJoon14928.java b/src/baekjoon/bronze/BaekJoon14928.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon14928.java
rename to src/baekjoon/bronze/BaekJoon14928.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15000.java b/src/baekjoon/bronze/BaekJoon15000.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15000.java
rename to src/baekjoon/bronze/BaekJoon15000.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15115.java b/src/baekjoon/bronze/BaekJoon15115.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15115.java
rename to src/baekjoon/bronze/BaekJoon15115.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15232.java b/src/baekjoon/bronze/BaekJoon15232.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15232.java
rename to src/baekjoon/bronze/BaekJoon15232.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon1551.java b/src/baekjoon/bronze/BaekJoon1551.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon1551.java
rename to src/baekjoon/bronze/BaekJoon1551.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15552.java b/src/baekjoon/bronze/BaekJoon15552.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15552.java
rename to src/baekjoon/bronze/BaekJoon15552.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15680.java b/src/baekjoon/bronze/BaekJoon15680.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15680.java
rename to src/baekjoon/bronze/BaekJoon15680.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15700.java b/src/baekjoon/bronze/BaekJoon15700.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15700.java
rename to src/baekjoon/bronze/BaekJoon15700.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15727.java b/src/baekjoon/bronze/BaekJoon15727.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15727.java
rename to src/baekjoon/bronze/BaekJoon15727.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15733.java b/src/baekjoon/bronze/BaekJoon15733.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15733.java
rename to src/baekjoon/bronze/BaekJoon15733.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15917.java b/src/baekjoon/bronze/BaekJoon15917.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15917.java
rename to src/baekjoon/bronze/BaekJoon15917.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15962.java b/src/baekjoon/bronze/BaekJoon15962.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15962.java
rename to src/baekjoon/bronze/BaekJoon15962.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15963.java b/src/baekjoon/bronze/BaekJoon15963.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15963.java
rename to src/baekjoon/bronze/BaekJoon15963.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon15964.java b/src/baekjoon/bronze/BaekJoon15964.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon15964.java
rename to src/baekjoon/bronze/BaekJoon15964.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon16170.java b/src/baekjoon/bronze/BaekJoon16170.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon16170.java
rename to src/baekjoon/bronze/BaekJoon16170.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon16394.java b/src/baekjoon/bronze/BaekJoon16394.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon16394.java
rename to src/baekjoon/bronze/BaekJoon16394.java
diff --git a/src/baekjoon/bronze/BaekJoon16972.java b/src/baekjoon/bronze/BaekJoon16972.java
new file mode 100644
index 0000000..02bd18e
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon16972.java
@@ -0,0 +1,27 @@
+package baekjoon.bronze;
+
+import java.util.HashSet;
+import java.util.Set;
+
+public class BaekJoon16972 {
+ public static void main(String[] args) {
+ int count = 814;
+ int min = -8140;
+ int max = 8140;
+ int range = max - min + 1;
+
+ Set pairs = new HashSet<>();
+
+ while (pairs.size() < count) {
+ int a = (int)(Math.random() * range) + min;
+ int b = (int)(Math.random() * range) + min;
+ String pair = a + "," + b; // 쌍을 문자열로 표현
+ pairs.add(pair);
+ }
+
+ // 출력
+ for (String pair : pairs) {
+ System.out.println(pair.replace(",", " "));
+ }
+ }
+}
diff --git a/src/baekjoon/bronze/BaekJoon20215.java b/src/baekjoon/bronze/BaekJoon20215.java
new file mode 100644
index 0000000..776c17f
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon20215.java
@@ -0,0 +1,27 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon20215 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ int w = Integer.parseInt(st.nextToken());
+
+ int h = Integer.parseInt(st.nextToken());
+
+ int sq = w + h;
+
+ double dagak = Math.sqrt(Math.pow(w,2)+Math.pow(h,2));
+
+ System.out.printf("%.6f", sq-dagak);
+ }
+}
diff --git a/src/main/java/baekjoon/bronze/BaekJoon20492.java b/src/baekjoon/bronze/BaekJoon20492.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon20492.java
rename to src/baekjoon/bronze/BaekJoon20492.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2083.java b/src/baekjoon/bronze/BaekJoon2083.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2083.java
rename to src/baekjoon/bronze/BaekJoon2083.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon21623.java b/src/baekjoon/bronze/BaekJoon21623.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon21623.java
rename to src/baekjoon/bronze/BaekJoon21623.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2163.java b/src/baekjoon/bronze/BaekJoon2163.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2163.java
rename to src/baekjoon/bronze/BaekJoon2163.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon23080.java b/src/baekjoon/bronze/BaekJoon23080.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon23080.java
rename to src/baekjoon/bronze/BaekJoon23080.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2393.java b/src/baekjoon/bronze/BaekJoon2393.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2393.java
rename to src/baekjoon/bronze/BaekJoon2393.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2446.java b/src/baekjoon/bronze/BaekJoon2446.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2446.java
rename to src/baekjoon/bronze/BaekJoon2446.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon24603.java b/src/baekjoon/bronze/BaekJoon24603.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon24603.java
rename to src/baekjoon/bronze/BaekJoon24603.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon24736.java b/src/baekjoon/bronze/BaekJoon24736.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon24736.java
rename to src/baekjoon/bronze/BaekJoon24736.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon24751.java b/src/baekjoon/bronze/BaekJoon24751.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon24751.java
rename to src/baekjoon/bronze/BaekJoon24751.java
diff --git a/src/baekjoon/bronze/BaekJoon2522.java b/src/baekjoon/bronze/BaekJoon2522.java
new file mode 100644
index 0000000..7035c7b
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon2522.java
@@ -0,0 +1,27 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class BaekJoon2522 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ int n = Integer.parseInt(br.readLine());
+
+ StringBuilder sb = new StringBuilder();
+
+ // 위쪽 삼각형
+ for (int i = 1; i <= n; i++) {
+ sb.append(" ".repeat(n - i)).append("*".repeat(i)).append("\n");
+ }
+
+ // 아래쪽 삼각형
+ for (int i = n - 1; i >= 1; i--) {
+ sb.append(" ".repeat(n - i)).append("*".repeat(i)).append("\n");
+ }
+
+ System.out.print(sb);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2525.java b/src/baekjoon/bronze/BaekJoon2525.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2525.java
rename to src/baekjoon/bronze/BaekJoon2525.java
diff --git a/src/baekjoon/bronze/BaekJoon25815.java b/src/baekjoon/bronze/BaekJoon25815.java
new file mode 100644
index 0000000..7589fc3
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon25815.java
@@ -0,0 +1,73 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon25815 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int catYear = Integer.parseInt(st.nextToken());
+ int catMonth = Integer.parseInt(st.nextToken());
+
+ int humanY =0;
+ int humanM =0;
+
+ int count = 0;
+
+
+
+ //1년 이상인 경우
+ while(catYear!=0){
+ if(count==0){
+ humanY += CatToHuman.FIRST.human;
+ catYear--;
+ count++;
+ }
+ else if(count==1){
+ humanY += CatToHuman.SECOND.human;
+ catYear--;
+ count++;
+ }
+ else if(count==2){
+ humanY += catYear * CatToHuman.OVER.human;
+ catYear=0;
+ }
+ }
+
+ if(count==0){
+ humanM = catMonth * CatToHuman.FIRST.human;
+ }else if(count ==1){
+ humanM = catMonth * CatToHuman.SECOND.human;
+ }else if(count == 2){
+ humanM = catMonth * CatToHuman.OVER.human;
+ }
+ humanY += humanM / 12;
+ humanM = humanM % 12;
+
+ System.out.print(humanY + " " + humanM);
+
+ }
+
+
+ enum CatToHuman{
+
+ FIRST(1,15),
+ SECOND(1, 9),
+ OVER(1,4);
+
+ CatToHuman(int cat, int human) {
+ this.cat = cat;
+ this.human = human;
+ }
+
+ final int cat;
+ final int human;
+
+ }
+}
diff --git a/src/main/java/baekjoon/bronze/BaekJoon25841.java b/src/baekjoon/bronze/BaekJoon25841.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon25841.java
rename to src/baekjoon/bronze/BaekJoon25841.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon26489.java b/src/baekjoon/bronze/BaekJoon26489.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon26489.java
rename to src/baekjoon/bronze/BaekJoon26489.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2738.java b/src/baekjoon/bronze/BaekJoon2738.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2738.java
rename to src/baekjoon/bronze/BaekJoon2738.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2743.java b/src/baekjoon/bronze/BaekJoon2743.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2743.java
rename to src/baekjoon/bronze/BaekJoon2743.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2744.java b/src/baekjoon/bronze/BaekJoon2744.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2744.java
rename to src/baekjoon/bronze/BaekJoon2744.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2754.java b/src/baekjoon/bronze/BaekJoon2754.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2754.java
rename to src/baekjoon/bronze/BaekJoon2754.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon28281.java b/src/baekjoon/bronze/BaekJoon28281.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon28281.java
rename to src/baekjoon/bronze/BaekJoon28281.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon2947.java b/src/baekjoon/bronze/BaekJoon2947.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon2947.java
rename to src/baekjoon/bronze/BaekJoon2947.java
diff --git a/src/main/java/baekjoon/bronze/BaekJoon29751.java b/src/baekjoon/bronze/BaekJoon29751.java
similarity index 100%
rename from src/main/java/baekjoon/bronze/BaekJoon29751.java
rename to src/baekjoon/bronze/BaekJoon29751.java
diff --git a/src/baekjoon/bronze/BaekJoon30007.java b/src/baekjoon/bronze/BaekJoon30007.java
new file mode 100644
index 0000000..3ddcc75
--- /dev/null
+++ b/src/baekjoon/bronze/BaekJoon30007.java
@@ -0,0 +1,27 @@
+package baekjoon.bronze;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon30007 {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ int N = Integer.parseInt(br.readLine());
+
+ for(int i= 0 ; i= 0; i--) {
+ LDS[i] = 1;
+ for (int j = n - 1; j > i; j--) {
+ if (array[j] < array[i]) LDS[i] = Math.max(LDS[i], LDS[j] + 1);
+ }
+ }
+
+ int answer = 0;
+
+ for(int i = 0 ; i lastNum){
+ //다음 수가 작은 수여야할 경우 근데 큼 그냥 패스
+ if(isReverse){
+ max = Math.max(dfs(array, index+1,length,lastNum,isReverse),max);
+ }
+ //다음 수가 큰 수여야할 경우, 근데 큼, 포함하거나 말거나
+ else{
+ //포함하거나
+ max = Math.max(dfs(array, index+1,length+1,array[index],isReverse),max);
+ //포함하지 않거나
+ max = Math.max(dfs(array,index+1,length,lastNum,isReverse),max);
+ }
+ //다음 수가 작은 상황
+ }else if(array[index] < lastNum){
+ //다음 수가 작아야하는 상황 근데 작음 포함하거나 말거나
+ if(isReverse){
+ //포함하거나
+ max = Math.max(dfs(array, index+1,length+1,array[index],isReverse),max);
+ //포함하지 않거나
+ max = Math.max(dfs(array,index+1,length,lastNum,isReverse),max);
+ }
+ //다음수가 커야하는 상황 근데 작음 그럼 reverse를 돌려보서 포함하거나 패스하거나
+ else{
+ //리버스를 돌려서 포함하거나
+ max = Math.max(dfs(array, index+1,length+1,array[index],!isReverse),max);
+ //포함하지 않거나
+ max = Math.max(dfs(array,index+1,length,lastNum,isReverse),max);
+ }
+ //같은 경우 그냥 패스
+ }else{
+ max = Math.max(dfs(array, index+1,length,lastNum,isReverse),max);
+ }
+
+ return max;
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon11404.java b/src/baekjoon/class4/BaekJoon11404.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon11404.java
rename to src/baekjoon/class4/BaekJoon11404.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon11444.java b/src/baekjoon/class4/BaekJoon11444.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon11444.java
rename to src/baekjoon/class4/BaekJoon11444.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon1149.java b/src/baekjoon/class4/BaekJoon1149.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1149.java
rename to src/baekjoon/class4/BaekJoon1149.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon11660.java b/src/baekjoon/class4/BaekJoon11660.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon11660.java
rename to src/baekjoon/class4/BaekJoon11660.java
diff --git a/src/baekjoon/class4/BaekJoon1167.java b/src/baekjoon/class4/BaekJoon1167.java
new file mode 100644
index 0000000..b9503d5
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1167.java
@@ -0,0 +1,122 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+
+public class BaekJoon1167 {
+
+ /*
+ 트리의 지름 문제인데 이전과 다른 점으로는
+ 입력이 간선 하나씩이 아닌 특정 노드에 연결된 모든 노드들로 부터 이루어지는 차이가 존재
+ 입력 다른것만 처리해주면 될 것으로 예상.
+ */
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static Map> graph = new HashMap<>();
+
+ public static void main(String[] args) throws IOException {
+ int n = Integer.parseInt(br.readLine());
+
+ init(n);
+
+ input(n);
+
+ System.out.print(searchResult());
+ }
+
+ static void init(int n){
+ for(int i=1;i<=n;i++){
+ graph.put(i,new ArrayList<>());
+ }
+ }
+
+ static void input(int n) throws IOException {
+ for(int i = 0;i queue = new LinkedList<>();
+
+ boolean[] visited = new boolean[graph.size()+1];
+ queue.add(new Node(1,0));
+ int farNode = 1;
+ int max = 0;
+ while(!queue.isEmpty()){
+ Node nowNode = queue.poll();
+ if(visited[nowNode.num]) continue;
+ else{
+ List linkNodes = graph.get(nowNode.num);
+ for(Node linkNode : linkNodes){
+ if(visited[linkNode.num]) continue;
+ else{
+ queue.add(new Node(linkNode.num, linkNode.weight+ nowNode.weight));
+ }
+ }
+ visited[nowNode.num] = true;
+ if(max < nowNode.weight){
+ max = nowNode.weight;
+ farNode = nowNode.num;
+ }
+ }
+ }
+ return farNode;
+ }
+
+ static int di(int i){
+ Queue queue = new LinkedList<>();
+
+ boolean[] visited = new boolean[graph.size()+1];
+ queue.add(new Node(i,0));
+ int max = 0;
+ while(!queue.isEmpty()){
+ Node nowNode = queue.poll();
+ if(visited[nowNode.num]) continue;
+ else{
+ List linkNodes = graph.get(nowNode.num);
+ for(Node linkNode : linkNodes){
+ if(visited[linkNode.num]) continue;
+ else{
+ queue.add(new Node(linkNode.num, linkNode.weight+ nowNode.weight));
+ }
+ }
+ visited[nowNode.num] = true;
+ if(max < nowNode.weight){
+ max = nowNode.weight;
+ }
+ }
+ }
+ return max;
+
+ }
+
+ static class Node{
+ int num;
+ int weight;
+
+ Node(int num, int weight){
+ this.num = num;
+ this.weight = weight;
+ }
+ }
+
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon11725.java b/src/baekjoon/class4/BaekJoon11725.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon11725.java
rename to src/baekjoon/class4/BaekJoon11725.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon1238.java b/src/baekjoon/class4/BaekJoon1238.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1238.java
rename to src/baekjoon/class4/BaekJoon1238.java
diff --git a/src/baekjoon/class4/BaekJoon12851.java b/src/baekjoon/class4/BaekJoon12851.java
new file mode 100644
index 0000000..30c7e31
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon12851.java
@@ -0,0 +1,95 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+
+//1회차 메모리 초과
+//시도 변경 dp 대신 bfs를 하되 add 하기전 time이 minTime 보다 큰지 확인.
+//Periority Queue -> Queue 변경 : 시간복잡도는 좀 버려도 공간 복잡도 살려보기
+public class BaekJoon12851 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+
+ int from = Integer.parseInt(st.nextToken());
+
+ int to = Integer.parseInt(st.nextToken());
+
+ if(from>=to){
+ System.out.println(from-to);
+ System.out.println(1);
+ return;
+ }
+
+ bfs(from, to);
+
+ }
+
+ private static void bfs(int from, int to) {
+
+ int MAX = 100000;
+ int[] visited = new int[MAX + 1]; // -1이면 방문 안함, 아니면 방문 시간 기록
+
+ Arrays.fill(visited, -1);
+
+ Queue queue = new LinkedList<>();
+ queue.add(from);
+ visited[from] = 0;
+
+ int minTime = Integer.MAX_VALUE;
+ int count = 0;
+
+ while (!queue.isEmpty()) {
+ int now = queue.poll();
+
+ int time = visited[now];
+
+ //목적지에 도착
+ if (now == to) {
+ if (time < minTime) {
+ minTime = time;
+ count = 1;
+ } else if (time == minTime) {
+ count++;
+ }
+ continue;
+ }
+
+ //최소 시간보다도 클때
+ if (time + 1 > minTime) continue;
+
+ int[] next = {now - 1, now + 1, now * 2};
+
+ for (int nx : next) {
+ if (nx < 0 || nx > MAX) continue;
+
+ //아직 방문을 하지 않았거나 또 방문을 했는 데 시간이 같다(같은 시간에 다른 경로로 왔다)
+ if (visited[nx] == -1 || visited[nx] == time + 1) {
+ visited[nx] = time + 1;
+ queue.add(nx);
+ }
+ }
+ }
+ System.out.println(minTime);
+ System.out.println(count);
+ }
+
+ static class Node{
+ int X;
+
+
+ int time;
+
+ Node(int X, int time){
+ this.X = X;
+ this.time = time;
+ }
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon12865.java b/src/baekjoon/class4/BaekJoon12865.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon12865.java
rename to src/baekjoon/class4/BaekJoon12865.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon13549.java b/src/baekjoon/class4/BaekJoon13549.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon13549.java
rename to src/baekjoon/class4/BaekJoon13549.java
diff --git a/src/baekjoon/class4/BaekJoon1504.java b/src/baekjoon/class4/BaekJoon1504.java
new file mode 100644
index 0000000..ca10c43
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1504.java
@@ -0,0 +1,155 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+
+public class BaekJoon1504 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ static Map> graph = new HashMap<>();
+
+ static int[][] distances;
+
+ public static void main(String[] args) throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ //Node 개수
+ int N = Integer.parseInt(st.nextToken());
+
+ //간선 개수
+ int E = Integer.parseInt(st.nextToken());
+
+ // 0 : 1 ~
+ // 1 : v1 ~
+ // 2 : v2 ~
+ distances = new int[3][N+1];
+
+ for(int i = 0 ; i < 3;i++)
+ Arrays.fill(distances[i],-1);
+
+ for(int i = 1; i <=N ;i++){
+ graph.put(i,new ArrayList<>());
+ }
+
+ for(int i =0 ; i < E; i++){
+ st = new StringTokenizer(br.readLine());
+
+ int start = Integer.parseInt(st.nextToken());
+
+ int end = Integer.parseInt(st.nextToken());
+
+ int cost = Integer.parseInt(st.nextToken());
+
+ graph.get(start).add(new Node(start, end, cost));
+ graph.get(end).add(new Node(end, start, cost));
+ }
+
+ st = new StringTokenizer(br.readLine());
+
+ int v1 = Integer.parseInt(st.nextToken());
+
+ int v2 = Integer.parseInt(st.nextToken());
+
+ bfs(1,0);
+ bfs(v1,1);
+ bfs(v2,2);
+
+
+ if(distances[1][N] == -1 || distances[2][N]==-1){
+ System.out.print(-1);
+ }else{
+ int mid1 = distances[1][v2];
+ int mid2 = distances[1][1] + distances[1][v2];
+
+ int midResult = Math.min(mid1,mid2);
+
+ int edge1 = distances[0][v1] + distances[2][N];
+
+ int edge2 = distances[0][v2] + distances[1][N];
+
+ int edgeResult = Math.min(edge1,edge2);
+
+ System.out.print(midResult + edgeResult);
+ }
+
+
+
+ //경우의 수
+ //1. 1 -> v1 -> v2 ->
+ //2. 1 -> v2 -> v1 -> N
+ //3. 1 -> v1 -> 1 -> v2 -> N
+ //4. 1 -> v2 -> 1 -> v1 -> N
+
+
+
+ }
+
+ static void bfs(int baseNode, int key){
+ PriorityQueue queue = new PriorityQueue<>(
+ Comparator.comparingInt(o -> o.cost)
+ );
+
+
+ // 시작점 거리 0으로 설정
+ distances[key][baseNode] = 0;
+ queue.add(new Node(baseNode, baseNode, 0));
+
+
+ while(!queue.isEmpty()){
+ Node now = queue.poll();
+
+ if (distances[key][now.end] < now.cost) continue;
+
+ for(Node next : graph.get(now.end)){
+ int newCost = now.cost + next.cost;
+
+ if (distances[key][next.end] == -1 || distances[key][next.end] > newCost) {
+ distances[key][next.end] = newCost;
+ queue.add(new Node(now.end, next.end, newCost));
+ }
+ }
+ }
+ }
+
+ static void dijkstra(int baseNode, int key) {
+ PriorityQueue queue = new PriorityQueue<>(
+ Comparator.comparingInt(o -> o.cost)
+ );
+
+ // 시작점 거리 0으로 설정
+ distances[key][baseNode] = 0;
+ queue.add(new Node(baseNode, baseNode, 0));
+
+ while (!queue.isEmpty()) {
+ Node now = queue.poll();
+
+ // 이미 더 짧은 경로가 있으면 스킵
+ if (distances[key][now.end] < now.cost) continue;
+
+ for (Node next : graph.get(now.end)) {
+ int newCost = now.cost + next.cost;
+ if (distances[key][next.end] == -1 || distances[key][next.end] > newCost) {
+ distances[key][next.end] = newCost;
+ queue.add(new Node(now.end, next.end, newCost));
+ }
+ }
+ }
+ }
+
+
+ static class Node{
+ int start;
+ int end;
+ int cost;
+
+ public Node(int x, int y, int cost) {
+ this.start = x;
+ this.end = y;
+ this.cost = cost;
+ }
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon15650.java b/src/baekjoon/class4/BaekJoon15650.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon15650.java
rename to src/baekjoon/class4/BaekJoon15650.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon15652.java b/src/baekjoon/class4/BaekJoon15652.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon15652.java
rename to src/baekjoon/class4/BaekJoon15652.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon15654.java b/src/baekjoon/class4/BaekJoon15654.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon15654.java
rename to src/baekjoon/class4/BaekJoon15654.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon15663.java b/src/baekjoon/class4/BaekJoon15663.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon15663.java
rename to src/baekjoon/class4/BaekJoon15663.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon15666.java b/src/baekjoon/class4/BaekJoon15666.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon15666.java
rename to src/baekjoon/class4/BaekJoon15666.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon16953.java b/src/baekjoon/class4/BaekJoon16953.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon16953.java
rename to src/baekjoon/class4/BaekJoon16953.java
diff --git a/src/baekjoon/class4/BaekJoon17070.java b/src/baekjoon/class4/BaekJoon17070.java
new file mode 100644
index 0000000..80c9063
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon17070.java
@@ -0,0 +1,98 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class BaekJoon17070 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ static boolean[][] field;
+
+ public static void main(String[] args) throws IOException {
+ int n = Integer.parseInt(br.readLine());
+
+ field = new boolean[n][n];
+
+ StringTokenizer st ;
+
+ for(int i = 0;i 가로, 대각선
+ if (canRightMove(x,y,n)) {
+ gdp[y][x + 1] += gdp[y][x]; // 가로 유지
+ gdp[y][x + 1] += cdp[y][x]; // 대각선에서 가로
+ }
+
+ // 세로 -> 세로, 대각선
+ if (canDownMove(x,y,n)) {
+ sdp[y + 1][x] += sdp[y][x]; // 세로 유지
+ sdp[y + 1][x] += cdp[y][x]; // 대각선에서 세로
+ }
+
+ // 대각선 -> 가로/세로/대각선
+ if (canCrossMove(x,y,n)) {
+ cdp[y + 1][x + 1] += gdp[y][x]; // 가로 → 대각선
+ cdp[y + 1][x + 1] += sdp[y][x]; // 세로 → 대각선
+ cdp[y + 1][x + 1] += cdp[y][x]; // 대각선 → 대각선
+ }
+ }
+ }
+
+ long result = gdp[n - 1][n - 1] + sdp[n - 1][n - 1] + cdp[n - 1][n - 1];
+
+
+ System.out.print(result);
+
+
+ }
+
+ static boolean canMove(int x, int y, int n ){
+ return (x < n && x >= 0 && y < n && y >= 0)&&field[y][x];
+ }
+
+ static boolean canRightMove(int x, int y, int n ){
+ return canMove(x+1,y,n);
+ }
+
+ static boolean canDownMove(int x, int y, int n ){
+ return canMove(x,y+1,n);
+ }
+
+ static boolean canCrossMove(int x, int y, int n){
+ return canMove(x+1,y,n)&&canMove(x+1,y+1,n)&&canMove(x,y+1,n);
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon1753.java b/src/baekjoon/class4/BaekJoon1753.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1753.java
rename to src/baekjoon/class4/BaekJoon1753.java
diff --git a/src/baekjoon/class4/BaekJoon1865.java b/src/baekjoon/class4/BaekJoon1865.java
new file mode 100644
index 0000000..249b896
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1865.java
@@ -0,0 +1,87 @@
+package baekjoon.class4;
+
+import java.io.*;
+import java.util.*;
+
+public class BaekJoon1865 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ static StringBuilder sb = new StringBuilder();
+
+ static class Edge {
+ int from, to, weight;
+ Edge(int from, int to, int weight) {
+ this.from = from;
+ this.to = to;
+ this.weight = weight;
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+ int tc = Integer.parseInt(br.readLine());
+
+ while (tc-- > 0) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int n = Integer.parseInt(st.nextToken()); // 지점 수
+ int m = Integer.parseInt(st.nextToken()); // 도로 수
+ int w = Integer.parseInt(st.nextToken()); // 웜홀 수
+
+ List edges = new ArrayList<>();
+
+ for (int i = 0; i < m; i++) {
+ st = new StringTokenizer(br.readLine());
+ int s = Integer.parseInt(st.nextToken());
+ int e = Integer.parseInt(st.nextToken());
+ int t = Integer.parseInt(st.nextToken());
+
+ edges.add(new Edge(s, e, t));
+ edges.add(new Edge(e, s, t));
+ }
+
+ for (int i = 0; i < w; i++) {
+ st = new StringTokenizer(br.readLine());
+ int s = Integer.parseInt(st.nextToken());
+ int e = Integer.parseInt(st.nextToken());
+ int t = Integer.parseInt(st.nextToken());
+
+ edges.add(new Edge(s, e, -t));
+ }
+
+ for (int i = 1; i <= n; i++) {
+ edges.add(new Edge(0, i, 0));
+ }
+
+ if (hasNegativeCycle(n, edges)) {
+ sb.append("YES\n");
+ } else {
+ sb.append("NO\n");
+ }
+ }
+
+ System.out.print(sb);
+ }
+
+ static boolean hasNegativeCycle(int n, List edges) {
+ int[] dist = new int[n + 1]; // 0번 노드 포함
+ Arrays.fill(dist, Integer.MAX_VALUE);
+ dist[0] = 0; // 시작은 가상의 0번 노드
+
+ for (int i = 0; i < n; i++) {
+ for (Edge edge : edges) {
+ if (dist[edge.from] != Integer.MAX_VALUE &&
+ dist[edge.to] > dist[edge.from] + edge.weight) {
+ dist[edge.to] = dist[edge.from] + edge.weight;
+ }
+ }
+ }
+
+ // n번째 루프에서 갱신되면 음수 사이클 존재
+ for (Edge edge : edges) {
+ if (dist[edge.from] != Integer.MAX_VALUE &&
+ dist[edge.to] > dist[edge.from] + edge.weight) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon1916.java b/src/baekjoon/class4/BaekJoon1916.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1916.java
rename to src/baekjoon/class4/BaekJoon1916.java
diff --git a/src/baekjoon/class4/BaekJoon1918.java b/src/baekjoon/class4/BaekJoon1918.java
new file mode 100644
index 0000000..10a7055
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1918.java
@@ -0,0 +1,94 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
+
+public class BaekJoon1918 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ public static void main(String[] args) throws IOException {
+ //평범한 식 입력
+ String input = br.readLine();
+ //식을 한글자씩 나누기
+ char[] token = input.toCharArray();
+ //연산자를 저장할 Stack 생성
+ Stack stack = new Stack<>();
+ //결과 출력 변수 생성
+ StringBuilder sb = new StringBuilder();
+ //한글자씩 검증 시작
+ for (char now : token) {
+ //연산자의 경우
+ if (Operation.isOperation(now)) {
+ //'(' 일경우 그냥 push'('이후에 쌓이는 것들이 ')'을 만났을 때 pop 될 구분점"
+ if (now == '(') stack.push(now);
+ //')'의 경우 ( 보다 늦게 쌓인 것들을 pop
+ else if (now == ')') {
+ //우선 stack의 top을 pop
+ Character top = stack.pop();
+ //stack의 top이 '(' 가 나올 때까지 반복
+ while (!(top == '(')) {
+ // pop 된 top의 경우 결과에 출력
+ sb.append(top);
+ // '('는 출력되지 않도록 출력 이후에 pop
+ top = stack.pop();
+ }
+ // '(' 도 ')' 도 아닌 경우
+ } else {
+ //stack이 비었으면 뭐든 상관 없이 push
+ if (stack.empty())
+ stack.push(now);
+ else {
+ //stack이 비지 않았으면 자신보다 레벨이 같거나 높은 op를 모두 pop
+ // + 보다 레벨이 높은 *, /, 레벨이 같은 + - 모두 pop
+ while (!stack.empty() && Operation.isOrder(now, stack.peek())) {
+ sb.append(stack.pop());
+ }
+ // 모두 pop을 한 뒤 now를 push
+ stack.push(now);
+ }
+ }
+ // 피연산인 경우 바로 출력
+ } else {
+ sb.append(now);
+ }
+ }
+
+ // 입력에 대한 처리가 끝난 이후 stack을 비워줌
+ while(!stack.empty()) {
+ sb.append(stack.pop());
+ }
+
+ //결과 출력
+ System.out.print(sb);
+ }
+
+
+ //연산자에 대한 정보를 처리
+ private static class Operation{
+ static Map operationLevel = new HashMap<>();
+
+ static {
+ operationLevel.put('+',1);
+ operationLevel.put('-',1);
+ operationLevel.put('*',2);
+ operationLevel.put('/',2);
+ operationLevel.put('(',0);
+ operationLevel.put(')',0);
+ }
+
+ //특정 Char가 Operation 인지 피연산자인지 구분
+ public static boolean isOperation(char ch){
+ return operationLevel.containsKey(ch);
+ }
+
+ //연산자끼리의 비교에서 레벨 수준 비교
+ //pop 해야하는 경우 어디까지 pop을 할지 정하게 됨
+ //pop하는 기준은 자기 보다 우선순위가 높거나 같은 경우 까지.
+ public static boolean isOrder(char a, char b){
+ return operationLevel.get(a) <= operationLevel.get(b);
+ }
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon1932.java b/src/baekjoon/class4/BaekJoon1932.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1932.java
rename to src/baekjoon/class4/BaekJoon1932.java
diff --git a/src/baekjoon/class4/BaekJoon1967.java b/src/baekjoon/class4/BaekJoon1967.java
new file mode 100644
index 0000000..1b5f983
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1967.java
@@ -0,0 +1,144 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+
+public class BaekJoon1967 {
+ /*
+ 트리의 지름 찾기.
+ 트리에서 가장 가중치 합이 큰 경로 찾기
+
+ 특정 노드에서 다른 모든 노드 중 가장 큰 가중치.
+
+ 근데 사실 리프 노드에서 다른 리프 노드까지의 길이만 측정해도 충분.
+
+ 리프 노드들에서 다른 모든 리프 노드 까지의 가중치를 구하는 것은 결국
+ 모든 노드까지의 거리를 구하는 것이니.
+
+ 특정 리프노드에서 다이제스트라 알고리즘을 실행하며 가장 큰 가중치를 확인하게끔.
+ */
+
+ //입력기
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+
+ //Node간의 연결 표시
+ //num이 key인 Node에 연결된 Node들의 집합.
+ static Map> graph;
+
+ public static void main(String[] args) throws IOException {
+ //node의 개수
+ int n = Integer.parseInt(br.readLine());
+
+ //node 에 연결된 다른 Node들 초기화
+ init(n);
+
+ //입력을 받아서 각 노드별 연결 정도 확인
+ input(n);
+
+ //결과 탐색 및 반환
+ int result = searchResult(n);
+
+ //결과 출력
+ System.out.print(result);
+ }
+
+ //그래프 초기화 시키기 작업
+ static void init(int n){
+ graph = new HashMap<>();
+ for(int i = 1;i<=n;i++){
+ graph.put(i, new ArrayList<>());
+ }
+ }
+
+ static void input(int n) throws IOException{
+ //1번 루트 노드를 자식으로 하는 입력은 없으니
+ //총 입력은 n-1 번
+ StringTokenizer st;
+ for(int i = 1;i queue = new LinkedList<>();
+
+ boolean[] visited = new boolean[graph.size()+1];
+ queue.add(new Node(1,0));
+ int farNode = 1;
+ int max = 0;
+ while(!queue.isEmpty()){
+ Node nowNode = queue.poll();
+ if(visited[nowNode.num]) continue;
+ else{
+ List linkNodes = graph.get(nowNode.num);
+ for(Node linkNode : linkNodes){
+ if(visited[linkNode.num]) continue;
+ else{
+ queue.add(new Node(linkNode.num, linkNode.weight+ nowNode.weight));
+ }
+ }
+ visited[nowNode.num] = true;
+ if(max < nowNode.weight){
+ max = nowNode.weight;
+ farNode = nowNode.num;
+ }
+ }
+ }
+ return farNode;
+ }
+
+ static int di(int i){
+ Queue queue = new LinkedList<>();
+
+ boolean[] visited = new boolean[graph.size()+1];
+ queue.add(new Node(i,0));
+ int max = 0;
+ while(!queue.isEmpty()){
+ Node nowNode = queue.poll();
+ if(visited[nowNode.num]) continue;
+ else{
+ List linkNodes = graph.get(nowNode.num);
+ for(Node linkNode : linkNodes){
+ if(visited[linkNode.num]) continue;
+ else{
+ queue.add(new Node(linkNode.num, linkNode.weight+ nowNode.weight));
+ }
+ }
+ visited[nowNode.num] = true;
+ if(max < nowNode.weight){
+ max = nowNode.weight;
+ }
+ }
+ }
+ return max;
+
+ }
+
+ static class Node{
+ int num;
+ int weight;
+
+ Node(int num, int weight){
+ this.num = num;
+ this.weight = weight;
+ }
+ }
+
+}
diff --git a/src/baekjoon/class4/BaekJoon1987.java b/src/baekjoon/class4/BaekJoon1987.java
new file mode 100644
index 0000000..e43dfcd
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon1987.java
@@ -0,0 +1,98 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Stack;
+import java.util.StringTokenizer;
+
+public class BaekJoon1987 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static char[][] field;
+
+ static boolean[] visitedAlph = new boolean[27];
+
+ static int[] moveX = {0,-1,0,1};
+ static int[] moveY = {-1,0,1,0};
+
+ public static void main(String[] args) throws IOException{
+
+ init();
+
+ solved();
+ }
+
+ private static void init() throws IOException {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+
+ int R = Integer.parseInt(st.nextToken());
+
+ int C = Integer.parseInt(st.nextToken());
+
+ field = new char[R][C];
+
+ for(int i = 0; i < R;i++){
+ char[] rInput = br.readLine().toCharArray();
+ int c = 0;
+ for(char input : rInput){
+ field[i][c++] = input;
+ }
+ }
+ }
+
+ private static void solved(){
+ int result = dfs(0,0,1);
+
+ System.out.print(result);
+ }
+
+ private static int dfs(int r, int c, int weight){
+ if(visitedAlph[charToIndex(r, c)]) return weight;
+
+ visitedAlph[charToIndex(r, c)] = true;
+
+ int max = weight;
+
+ for(int i = 0; i<4;i++){
+ if(canMove(r + moveY[i],c + moveX[i])){
+ int move = dfs(r + moveY[i], c+ moveX[i], weight+1);
+ max = Math.max(max, move);
+ }
+ }
+
+ visitedAlph[charToIndex(r, c)] = false;
+ return max;
+ }
+
+ private static boolean canMove(int r, int c){
+ if(r<0) return false;
+
+ if(field.length<=r) return false;
+
+ if(field[0].length<=c) return false;
+
+ if(c<0) return false;
+
+ if(visitedAlph[charToIndex(r, c)]) return false;
+
+ return true;
+ }
+
+ private static int charToIndex(int r, int c) {
+ return field[r][c] - 'A';
+ }
+
+ private class Node{
+ int weight;
+
+ int r;
+ int c;
+
+ public Node(int weight, int r, int c) {
+ this.weight = weight;
+ this.r = r;
+ this.c = c;
+ }
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon1991.java b/src/baekjoon/class4/BaekJoon1991.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon1991.java
rename to src/baekjoon/class4/BaekJoon1991.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon2096.java b/src/baekjoon/class4/BaekJoon2096.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon2096.java
rename to src/baekjoon/class4/BaekJoon2096.java
diff --git a/src/main/java/baekjoon/class4/BaekJoon2206.java b/src/baekjoon/class4/BaekJoon2206.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon2206.java
rename to src/baekjoon/class4/BaekJoon2206.java
diff --git a/src/baekjoon/class4/BaekJoon2448.java b/src/baekjoon/class4/BaekJoon2448.java
new file mode 100644
index 0000000..b3a4fa5
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon2448.java
@@ -0,0 +1,51 @@
+package baekjoon.class4;
+
+import java.util.Scanner;
+
+public class BaekJoon2448 {
+ static char[][] arr;
+
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ int N = sc.nextInt();
+ arr = new char[N][2 * N - 1];
+
+ // 공백 초기화
+ for (int i = 0; i < N; i++) {
+ for (int j = 0; j < 2 * N - 1; j++) {
+ arr[i][j] = ' ';
+ }
+ }
+
+ drawTriangle(N, 0, N - 1);
+
+ // 출력
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < N; i++) {
+ sb.append(arr[i]);
+ sb.append("\n");
+ }
+ System.out.println(sb);
+ }
+
+ // N 높이의 삼각형을 (x, y) 꼭짓점 중심에 그리기
+ static void drawTriangle(int size, int x, int y) {
+ if (size == 3) {
+ arr[x][y] = '*';
+ arr[x + 1][y - 1] = '*';
+ arr[x + 1][y + 1] = '*';
+ for (int i = -2; i <= 2; i++) {
+ arr[x + 2][y + i] = '*';
+ }
+ return;
+ }
+
+ int newSize = size / 2;
+ // 위 삼각형
+ drawTriangle(newSize, x, y);
+ // 왼쪽 아래 삼각형
+ drawTriangle(newSize, x + newSize, y - newSize);
+ // 오른쪽 아래 삼각형
+ drawTriangle(newSize, x + newSize, y + newSize);
+ }
+}
diff --git a/src/main/java/baekjoon/class4/BaekJoon9251.java b/src/baekjoon/class4/BaekJoon9251.java
similarity index 100%
rename from src/main/java/baekjoon/class4/BaekJoon9251.java
rename to src/baekjoon/class4/BaekJoon9251.java
diff --git a/src/baekjoon/class4/BaekJoon9935.java b/src/baekjoon/class4/BaekJoon9935.java
new file mode 100644
index 0000000..2d5e0b2
--- /dev/null
+++ b/src/baekjoon/class4/BaekJoon9935.java
@@ -0,0 +1,56 @@
+package baekjoon.class4;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Stack;
+
+public class BaekJoon9935 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ String text = br.readLine();
+
+ String boomText = br.readLine();
+
+
+ Stack stack = new Stack<>();
+
+ A : for(char now : text.toCharArray()){
+ if(now==boomText.charAt(boomText.length()-1)){
+ Stack transaction = new Stack<>();
+ for(int i = boomText.length()-2; i>=0;i--){
+ if(stack.isEmpty()){
+ rollback(stack, transaction);
+ stack.push(now);
+ continue A;
+ }
+ char stackPop = stack.pop();
+ transaction.push(stackPop);
+ if(boomText.charAt(i)!=stackPop){
+ rollback(stack,transaction);
+ stack.push(now);
+ continue A;
+ }
+ }
+ }else{
+ stack.push(now);
+ }
+ }
+
+ while(!stack.isEmpty()){
+ sb.append(stack.pop());
+ }
+ sb.reverse();
+
+ System.out.println(sb.toString().isEmpty()?"FRULA":sb);
+ }
+
+ private static void rollback(Stack stack, Stack transaction) {
+ while(!transaction.isEmpty()){
+ stack.push(transaction.pop());
+ }
+ }
+}
diff --git a/src/baekjoon/class5/B1106.java b/src/baekjoon/class5/B1106.java
new file mode 100644
index 0000000..6350eac
--- /dev/null
+++ b/src/baekjoon/class5/B1106.java
@@ -0,0 +1,49 @@
+package baekjoon.class5;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B1106 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ public static void main(String[] args) throws IOException {
+
+ String[] input = br.readLine().split(" ");
+
+ int c = Integer.parseInt(input[0]); // 목표 고객 수
+ int n = Integer.parseInt(input[1]); // 도시 수
+
+ int[] cost = new int[n];
+ int[] people = new int[n];
+
+ for(int i = 0; i < n; i++){
+ input = br.readLine().split(" ");
+ cost[i] = Integer.parseInt(input[0]);
+ people[i] = Integer.parseInt(input[1]);
+ }
+
+ int[] dp = new int[c + 101];
+ Arrays.fill(dp, Integer.MAX_VALUE);
+
+ dp[0] = 0;
+
+ for(int i = 0; i < n; i++){
+ for(int j = people[i]; j < c + 101; j++){
+ if(dp[j - people[i]] != Integer.MAX_VALUE){
+ dp[j] = Math.min(dp[j], dp[j - people[i]] + cost[i]);
+ }
+ }
+ }
+
+ int answer = Integer.MAX_VALUE;
+
+ for(int i = c; i < c + 101; i++){
+ answer = Math.min(answer, dp[i]);
+ }
+
+ System.out.println(answer);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/baekjoon/gold/BaekJoon14502.java b/src/baekjoon/gold/BaekJoon14502.java
similarity index 100%
rename from src/main/java/baekjoon/gold/BaekJoon14502.java
rename to src/baekjoon/gold/BaekJoon14502.java
diff --git a/src/main/java/baekjoon/gold/BaekJoon9663.java b/src/baekjoon/gold/BaekJoon9663.java
similarity index 100%
rename from src/main/java/baekjoon/gold/BaekJoon9663.java
rename to src/baekjoon/gold/BaekJoon9663.java
diff --git a/src/main/java/baekjoon/seed/BigIntegerOperatior.java b/src/baekjoon/seed/BigIntegerOperatior.java
similarity index 100%
rename from src/main/java/baekjoon/seed/BigIntegerOperatior.java
rename to src/baekjoon/seed/BigIntegerOperatior.java
diff --git a/src/main/java/baekjoon/seed/Rich.java b/src/baekjoon/seed/Rich.java
similarity index 100%
rename from src/main/java/baekjoon/seed/Rich.java
rename to src/baekjoon/seed/Rich.java
diff --git a/src/baekjoon/silver/B1004.java b/src/baekjoon/silver/B1004.java
new file mode 100644
index 0000000..40bad53
--- /dev/null
+++ b/src/baekjoon/silver/B1004.java
@@ -0,0 +1,47 @@
+package baekjoon.silver;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.util.StringTokenizer;
+
+public class B1004 {
+ public static void main(String[] args) throws Exception {
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+ StringBuilder sb = new StringBuilder();
+
+ int T = Integer.parseInt(br.readLine());
+
+ while (T-- > 0) {
+ StringTokenizer st = new StringTokenizer(br.readLine());
+ int x1 = Integer.parseInt(st.nextToken());
+ int y1 = Integer.parseInt(st.nextToken());
+ int x2 = Integer.parseInt(st.nextToken());
+ int y2 = Integer.parseInt(st.nextToken());
+
+ int n = Integer.parseInt(br.readLine());
+ int count = 0;
+
+ for (int i = 0; i < n; i++) {
+ st = new StringTokenizer(br.readLine());
+ int cx = Integer.parseInt(st.nextToken());
+ int cy = Integer.parseInt(st.nextToken());
+ int r = Integer.parseInt(st.nextToken());
+
+ boolean startIn = isInside(x1, y1, cx, cy, r);
+ boolean endIn = isInside(x2, y2, cx, cy, r);
+
+ if (startIn ^ endIn) count++;
+ }
+
+ sb.append(count).append('\n');
+ }
+
+ System.out.print(sb);
+ }
+
+ static boolean isInside(int x, int y, int cx, int cy, int r) {
+ long dx = x - cx;
+ long dy = y - cy;
+ return dx * dx + dy * dy < (long) r * r;
+ }
+}
diff --git a/src/baekjoon/silver/B1049.java b/src/baekjoon/silver/B1049.java
new file mode 100644
index 0000000..b45f9dd
--- /dev/null
+++ b/src/baekjoon/silver/B1049.java
@@ -0,0 +1,56 @@
+package baekjoon.silver;
+
+import basic.datastructure.list.ArrayList;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B1049 {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+
+ String[] input = br.readLine().split(" ");
+
+ int need = Integer.parseInt(input[0]);
+
+ int brand = Integer.parseInt(input[1]);
+
+ int setMin = Integer.MAX_VALUE;
+
+ int numMin = Integer.MAX_VALUE;
+
+ for(int i = 0 ; i < brand;i++){
+ input = br.readLine().split(" ");
+
+ setMin = Math.min(setMin, Integer.parseInt(input[0]));
+
+ numMin = Math.min(numMin, Integer.parseInt(input[1]));
+ }
+
+ boolean cheapSet = setMin < numMin * 6;
+
+ int result=0;
+
+ int needSet = need / 6;
+ int needNum = need % 6;
+
+ if(cheapSet){
+ result += needSet * setMin;
+
+ if (needNum * numMin < setMin) {
+ result += needNum * numMin;
+ } else {
+ result += setMin;
+ }
+ }else{
+ result = need * numMin;
+ }
+ sb.append(result);
+ System.out.print(sb);
+ }
+
+}
diff --git a/src/baekjoon/silver/B1926.java b/src/baekjoon/silver/B1926.java
new file mode 100644
index 0000000..77b1cbd
--- /dev/null
+++ b/src/baekjoon/silver/B1926.java
@@ -0,0 +1,125 @@
+package baekjoon.silver;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.StringTokenizer;
+
+public class B1926 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ private static boolean[][] field;
+
+ private static boolean[][] visited;
+
+
+ private static int artNum = 0;
+ private static int maxNum =0;
+
+ private static void input() throws IOException {
+ StringTokenizer st;
+ for(int i = 0; i< field.length;i++){
+ int j = 0;
+ st= new StringTokenizer(br.readLine(), " ");
+
+ while(st.hasMoreTokens()){
+ field[i][j++] = st.nextToken().equals("1");
+ }
+ }
+ }
+
+ public static void main(String[] args) throws IOException {
+
+ StringTokenizer st = new StringTokenizer(br.readLine(), " ");
+
+ int n = Integer.parseInt(st.nextToken());
+
+ int m = Integer.parseInt(st.nextToken());
+
+ field = new boolean[n][m];
+
+ input();
+
+ visited = new boolean[n][m];
+
+ for(int i = 0; i < field.length;i++){
+ for(int j = 0 ; j queue = new LinkedList<>();
+
+ queue.add(new Node(y,x));
+ int count=0;
+
+
+ while(!queue.isEmpty()){
+ Node now = queue.poll();
+ if(visited[now.y][now.x]){
+ continue;
+ }
+ count++;
+ visited[now.y][now.x] = true;
+
+ for(int i = 0 ; i < 4;i++){
+ int nextX = now.x + dx[i];
+ int nextY = now.y + dy[i];
+
+ if(checkPosition(nextY, nextX)){
+ if(!visited[nextY][nextX]&&field[nextY][nextX]){
+ queue.add(new Node(nextY, nextX));
+ }
+ }
+ }
+ }
+ if(count> maxNum){
+ maxNum = count;
+ }
+ }
+
+ private static boolean checkPosition(int y, int x){
+ if(y<0||y>=field.length){
+ return false;
+ }
+ if(x<0||x>=field[0].length){
+ return false;
+ }
+ return true;
+ }
+
+
+
+
+
+ private static class Node{
+ int x;
+ int y;
+
+ Node(int y, int x){
+ this.x = x;
+ this.y = y;
+ }
+ }
+}
diff --git a/src/baekjoon/silver/B7562.java b/src/baekjoon/silver/B7562.java
new file mode 100644
index 0000000..34bdbf4
--- /dev/null
+++ b/src/baekjoon/silver/B7562.java
@@ -0,0 +1,84 @@
+package baekjoon.silver;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Comparator;
+import java.util.Objects;
+import java.util.PriorityQueue;
+
+public class B7562 {
+
+ private static boolean[][] visited;
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static int goalX;
+ private static int goalY;
+
+ private static int[] moveX = {-1,1,-2,-2,-1,1,2,2};
+ private static int[] moveY = {-2,-2,-1,1,2,2,-1,1};
+
+ private static PriorityQueue queue ;
+
+ public static void main(String[] args) throws IOException {
+
+ int testCase = Integer.parseInt(br.readLine());
+
+ for(int t=0;t(Comparator.comparing(o->o.count));
+
+ String input = br.readLine();
+
+ int x = Integer.parseInt(input.split(" ")[0]);
+ int y = Integer.parseInt(input.split(" ")[1]);
+
+ queue.add(new Node(x,y,0));
+
+ input = br.readLine();
+ goalX = Integer.parseInt(input.split(" ")[0]);
+ goalY = Integer.parseInt(input.split(" ")[1]);
+
+ while(!queue.isEmpty()){
+ Node now = queue.poll();
+
+ if(visited[now.y][now.x]){
+ continue;
+ }
+
+ visited[now.y][now.x] = true;
+ if(now.x == goalX && now.y == goalY){
+ System.out.println(now.count);
+ break;
+ }
+ for(int i = 0 ; i < moveX.length ; i++){
+ if(canMove(now.x+moveX[i],now.y+moveY[i])){
+ queue.add(new Node(now.x+moveX[i],now.y+moveY[i],now.count+1));
+ }
+ }
+ }
+ }
+
+ }
+
+ static boolean canMove(int x, int y){
+ return x >= 0 && y >= 0 && x < visited.length && y < visited.length && !visited[y][x];
+ }
+
+ private static class Node{
+ int x;
+ int y;
+ int count;
+
+ Node(int x, int y, int count){
+ this.x = x;
+ this.y = y;
+ this.count = count;
+ }
+ }
+
+}
diff --git a/src/main/java/baekjoon/silver/BaekJonn19709.java b/src/baekjoon/silver/BaekJonn19709.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJonn19709.java
rename to src/baekjoon/silver/BaekJonn19709.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1010.java b/src/baekjoon/silver/BaekJoon1010.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1010.java
rename to src/baekjoon/silver/BaekJoon1010.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1094.java b/src/baekjoon/silver/BaekJoon1094.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1094.java
rename to src/baekjoon/silver/BaekJoon1094.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon11123.java b/src/baekjoon/silver/BaekJoon11123.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon11123.java
rename to src/baekjoon/silver/BaekJoon11123.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon11675.java b/src/baekjoon/silver/BaekJoon11675.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon11675.java
rename to src/baekjoon/silver/BaekJoon11675.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1193.java b/src/baekjoon/silver/BaekJoon1193.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1193.java
rename to src/baekjoon/silver/BaekJoon1193.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1268.java b/src/baekjoon/silver/BaekJoon1268.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1268.java
rename to src/baekjoon/silver/BaekJoon1268.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1312.java b/src/baekjoon/silver/BaekJoon1312.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1312.java
rename to src/baekjoon/silver/BaekJoon1312.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1316.java b/src/baekjoon/silver/BaekJoon1316.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1316.java
rename to src/baekjoon/silver/BaekJoon1316.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon13172.java b/src/baekjoon/silver/BaekJoon13172.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon13172.java
rename to src/baekjoon/silver/BaekJoon13172.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon13414.java b/src/baekjoon/silver/BaekJoon13414.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon13414.java
rename to src/baekjoon/silver/BaekJoon13414.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon13909.java b/src/baekjoon/silver/BaekJoon13909.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon13909.java
rename to src/baekjoon/silver/BaekJoon13909.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1475.java b/src/baekjoon/silver/BaekJoon1475.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1475.java
rename to src/baekjoon/silver/BaekJoon1475.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon15779.java b/src/baekjoon/silver/BaekJoon15779.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon15779.java
rename to src/baekjoon/silver/BaekJoon15779.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon16208.java b/src/baekjoon/silver/BaekJoon16208.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon16208.java
rename to src/baekjoon/silver/BaekJoon16208.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon1629.java b/src/baekjoon/silver/BaekJoon1629.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon1629.java
rename to src/baekjoon/silver/BaekJoon1629.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon17127.java b/src/baekjoon/silver/BaekJoon17127.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon17127.java
rename to src/baekjoon/silver/BaekJoon17127.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon24173.java b/src/baekjoon/silver/BaekJoon24173.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon24173.java
rename to src/baekjoon/silver/BaekJoon24173.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon24755.java b/src/baekjoon/silver/BaekJoon24755.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon24755.java
rename to src/baekjoon/silver/BaekJoon24755.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon2667.java b/src/baekjoon/silver/BaekJoon2667.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon2667.java
rename to src/baekjoon/silver/BaekJoon2667.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon26876.java b/src/baekjoon/silver/BaekJoon26876.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon26876.java
rename to src/baekjoon/silver/BaekJoon26876.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon31575.java b/src/baekjoon/silver/BaekJoon31575.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon31575.java
rename to src/baekjoon/silver/BaekJoon31575.java
diff --git a/src/baekjoon/silver/BaekJoon3711.java b/src/baekjoon/silver/BaekJoon3711.java
new file mode 100644
index 0000000..5ca235d
--- /dev/null
+++ b/src/baekjoon/silver/BaekJoon3711.java
@@ -0,0 +1,46 @@
+package baekjoon.silver;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.HashSet;
+
+public class BaekJoon3711 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int testCase = Integer.parseInt(br.readLine());
+
+ for(int i = 0 ; i < testCase; i++){
+ int studentNum = Integer.parseInt(br.readLine());
+
+ int[] studentIds = new int[studentNum];
+
+ for(int j = 0 ; j namage = new HashSet<>();
+ int min = 0;
+ A : while(true){
+ namage.clear();
+ min++;
+ for(int id : studentIds){
+ int temp = id % min;
+
+ if(namage.contains(temp)) continue A;
+ else{
+ namage.add(temp);
+ }
+ }
+ sb.append(min).append("\n");
+ break;
+ }
+ }
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/main/java/baekjoon/silver/BaekJoon8975.java b/src/baekjoon/silver/BaekJoon8975.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon8975.java
rename to src/baekjoon/silver/BaekJoon8975.java
diff --git a/src/main/java/baekjoon/silver/BaekJoon9372.java b/src/baekjoon/silver/BaekJoon9372.java
similarity index 100%
rename from src/main/java/baekjoon/silver/BaekJoon9372.java
rename to src/baekjoon/silver/BaekJoon9372.java
diff --git a/src/basic/algorithm/AbstractGraphAlgorithm.java b/src/basic/algorithm/AbstractGraphAlgorithm.java
new file mode 100644
index 0000000..2303114
--- /dev/null
+++ b/src/basic/algorithm/AbstractGraphAlgorithm.java
@@ -0,0 +1,70 @@
+package basic.algorithm;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+
+public class AbstractGraphAlgorithm {
+ protected static int[][] field;
+
+ protected static boolean[][] visited;
+
+ public void init(BufferedReader br) throws IOException {
+ System.out.println("그래프의 크기는 가로 N, 세로 M으로 적용됩니다.");
+
+ System.out.print("세로 N의 크기를 입력해주세요. : ");
+ int N = Integer.parseInt(br.readLine());
+
+ System.out.print("가로 M의 크기를 입력해주세요. : ");
+ int M = Integer.parseInt(br.readLine());
+
+ field = new int[N][M];
+
+ visited = new boolean[N][M];
+ }
+
+ public void input(BufferedReader br) throws IOException {
+ System.out.printf("그래프를 입력해주세요.\n 입력은 %d X %d의 크기로 작성해주시고, 열은 Enter, 행은 띄어쓰기로 구분해주세요.\n", field.length, field[0].length);
+
+ for (int i = 0 ; i< field.length ; i++) {
+ String line = br.readLine();
+
+ String[] rows = line.split(" ");
+
+ int col =0;
+
+ if (rows.length != field[0].length) {
+ System.out.printf("%d번째 열의 입력값이 이상합니다. 확인해주세요.", i);
+ throw new IOException();
+ }
+ for(String row : rows) {
+ field[i][col++] = Integer.parseInt(row);
+ }
+
+ }
+ }
+
+ public void printAsGraph(){
+ for (int[] ints : field) {
+ for (int anInt : ints) {
+ System.out.print(anInt + " ");
+ }
+ System.out.println();
+ }
+ System.out.println();
+ }
+
+ public void printAsVisited(){
+ for(boolean[] row : visited){
+ for (boolean bol : row) {
+ if(bol){
+ System.out.print("O ");
+ }else{
+ System.out.print("X ");
+ }
+ }
+ System.out.println();
+ }
+
+ System.out.println();
+ }
+}
diff --git a/src/main/java/basic/algorithm/AbstractTreeAlogorithm.java b/src/basic/algorithm/AbstractTreeAlogorithm.java
similarity index 100%
rename from src/main/java/basic/algorithm/AbstractTreeAlogorithm.java
rename to src/basic/algorithm/AbstractTreeAlogorithm.java
diff --git a/src/basic/algorithm/Dijkstra.java b/src/basic/algorithm/Dijkstra.java
new file mode 100644
index 0000000..cfc3ff9
--- /dev/null
+++ b/src/basic/algorithm/Dijkstra.java
@@ -0,0 +1,183 @@
+package basic.algorithm;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.*;
+
+
+/*
+특정 노드에서 다른 모든 노드까지의 최단 거리를 구하는 알고리즘.
+
+음수 가중치가 있을 경우에는 쓸 수 없음.
+
+해당 문제에선 방향 없는 그래프를 기준.
+ */
+public class Dijkstra {
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ static int[] distance;
+
+ static Map> graph = new HashMap<>();
+
+ public static void main(String[] args) throws IOException {
+
+ //Node의 개수
+ int N = Integer.parseInt(br.readLine());
+
+ //간선의 개수
+ int E = Integer.parseInt(br.readLine());
+
+ //0 은 사용하지 않고 1 ~ N를 사용하며 특정 Node 부터 다른 Node들 까지의 거리.
+ init(N);
+
+ input(E);
+
+ //입력 특정 노드
+ dijkstra(Integer.parseInt(br.readLine()));
+
+ printDistance();
+ }
+ //다익스트라 알고리즘
+ private static void dijkstra(int base){
+ //우선 순위 큐를 이용.
+ PriorityQueue queue = new PriorityQueue<>(
+ Comparator.comparingInt(node -> node.cost)
+ );
+
+ //시작점을 Queue에 추가한 채로 시작
+ queue.add(new Node(base, 0));
+
+ //중요 포인트
+ distance[base] = 0;
+
+ //Queue를 빼고 시작
+ while(!queue.isEmpty()){
+ //가장 최근의 노드를 poll
+ Node now = queue.poll();
+
+ //만약 추가하려는 값이 기존 최솟 값보다 크거나 같다면
+ //같은 과정이 반복될테니 제외
+ //이때 now.cost와 distance[now.to] 가 같은 경우는 최솟값을 최초로 집어 넣을 때만 해당
+ if(now.cost > distance[now.to]) continue;
+
+ //값의 갱신이 이루어져야한다면 해당 Node와 이어진 모든 Node들을 탐색
+ for(Node next : graph.get(now.to)){
+ //다음으로 이어지는 Cost를 구함.
+ int nextDistance = now.cost + next.cost;
+
+ //이어지는 cost가 최신 distance보다 작을 경우
+ if(nextDistance < distance[next.to]){
+ //해당 값을 Queue에 추가.
+ distance[next.to] = nextDistance;
+ queue.add(new Node(next.to, nextDistance));
+ }
+ }
+ }
+ }
+
+ //초기화 과정
+ private static void init(int N) {
+ distance = new int[N +1];
+
+ //거리의 초기값을 최댓값으로 지정.
+ Arrays.fill(distance,Integer.MAX_VALUE);
+
+ //Graph 초기화
+ for(int i = 1; i<= N; i++){
+ graph.put(i, new ArrayList<>());
+ }
+ }
+ //입력 과정
+ private static void input(int E) throws IOException {
+ StringTokenizer st;
+
+ //그래프 입력
+ for(int i = 0; i< E; i++){
+ //입력의 형태는 (from) (to) (cost)
+ st = new StringTokenizer(br.readLine());
+
+ //시작 노드
+ int from = Integer.parseInt(st.nextToken());
+ //도착 노드
+ int to = Integer.parseInt(st.nextToken());
+ //비용
+ int cost = Integer.parseInt(st.nextToken());
+
+ //양 방향이기 때문에 둘 모두에 입력
+ graph.get(from).add(new Node(to, cost));
+ graph.get(to).add(new Node(from, cost));
+ }
+ }
+ //결과 출력 과정
+ private static void printDistance() {
+ int count = 0 ;
+ for(int i : distance){
+ if(count==0){
+ count++;
+ continue;
+ }
+
+ if(i == Integer.MAX_VALUE)
+ sb.append(String.format("%3s", "INF")).append(" ");
+ else
+ sb.append(String.format("%3d", i)).append(" ");
+ }
+
+ System.out.print(sb);
+ }
+
+ static class Node{
+ int to;
+ int cost;
+
+ public Node(int to, int cost) {
+ this.to = to;
+ this.cost = cost;
+ }
+ }
+}
+
+//Test Case 1
+/*
+입력
+5
+6
+1 2 2
+1 3 3
+2 3 2
+2 4 4
+3 4 1
+4 5 1
+1
+
+0 2 3 4 5
+*/
+//Test Case 2
+/*
+입력
+4
+4
+1 2 1
+2 3 2
+3 4 3
+1 4 10
+1
+
+출력
+0 1 3 6
+*/
+//Tast Case 3
+/*
+입력
+3
+2
+1 2 5
+2 3 2
+2
+
+출력
+ 7 0 2
+ */
diff --git a/src/main/java/basic/algorithm/Order.java b/src/basic/algorithm/Order.java
similarity index 100%
rename from src/main/java/basic/algorithm/Order.java
rename to src/basic/algorithm/Order.java
diff --git a/src/main/java/basic/baaarking/sum100.java b/src/basic/baaarking/sum100.java
similarity index 100%
rename from src/main/java/basic/baaarking/sum100.java
rename to src/basic/baaarking/sum100.java
diff --git a/src/basic/bfs/GraphBFS.java b/src/basic/bfs/GraphBFS.java
new file mode 100644
index 0000000..f15590d
--- /dev/null
+++ b/src/basic/bfs/GraphBFS.java
@@ -0,0 +1,73 @@
+package basic.bfs;
+
+import basic.algorithm.AbstractGraphAlgorithm;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.LinkedList;
+import java.util.Queue;
+
+public class GraphBFS extends AbstractGraphAlgorithm {
+
+ private static final int[] dx = {-1, 1, 0, 0}; // 상하좌우
+ private static final int[] dy = {0, 0, -1, 1};
+
+ public static void main(String[] args) throws IOException {
+ GraphBFS bfs = new GraphBFS();
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ bfs.init(br);
+ bfs.input(br);
+ bfs.printAsGraph();
+
+ System.out.println("BFS 탐색 시작 (시작점 입력): ");
+ System.out.print("행(row): ");
+ int startRow = Integer.parseInt(br.readLine());
+ System.out.print("열(col): ");
+ int startCol = Integer.parseInt(br.readLine());
+
+ bfs.bfs(startRow, startCol);
+ }
+
+ private void bfs(int x, int y) {
+ Queue queue = new LinkedList<>();
+
+ // 시작점이 이동 불가능한 경우
+ if (field[x][y] != 1) {
+ System.out.println("시작 지점이 이동 불가능합니다.");
+ return;
+ }
+
+ visited[x][y] = true;
+ printAsVisited();
+ queue.add(new Node(x, y));
+
+ while (!queue.isEmpty()) {
+ Node now = queue.poll();
+
+ for (int i = 0; i < 4; i++) {
+ int nx = now.x + dx[i];
+ int ny = now.y + dy[i];
+
+ if (nx >= 0 && nx < field.length &&
+ ny >= 0 && ny < field[0].length &&
+ !visited[nx][ny] && field[nx][ny] == 1) {
+
+ visited[nx][ny] = true;
+ printAsVisited();
+ queue.add(new Node(nx, ny));
+ }
+ }
+ }
+ }
+
+ private static class Node {
+ int x;
+ int y;
+
+ Node(int x, int y) {
+ this.x = x;
+ this.y = y;
+ }
+ }
+}
diff --git a/src/main/java/basic/algorithm/BFS.java b/src/basic/bfs/TreeBFS.java
similarity index 77%
rename from src/main/java/basic/algorithm/BFS.java
rename to src/basic/bfs/TreeBFS.java
index 48c3c85..b782d49 100644
--- a/src/main/java/basic/algorithm/BFS.java
+++ b/src/basic/bfs/TreeBFS.java
@@ -1,13 +1,10 @@
-package basic.algorithm;
+package basic.bfs;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
+import basic.algorithm.AbstractTreeAlogorithm;
import java.util.LinkedList;
import java.util.Queue;
-import java.util.StringTokenizer;
-public class BFS extends AbstractTreeAlogorithm{
+public class TreeBFS extends AbstractTreeAlogorithm {
public static void main(String[] args){
printAsBinaryTree();
diff --git a/src/main/java/basic/datastructure/Base.java b/src/basic/datastructure/Base.java
similarity index 100%
rename from src/main/java/basic/datastructure/Base.java
rename to src/basic/datastructure/Base.java
diff --git a/src/main/java/basic/datastructure/list/AbstractList.java b/src/basic/datastructure/list/AbstractList.java
similarity index 100%
rename from src/main/java/basic/datastructure/list/AbstractList.java
rename to src/basic/datastructure/list/AbstractList.java
diff --git a/src/main/java/basic/datastructure/list/ArrayList.java b/src/basic/datastructure/list/ArrayList.java
similarity index 100%
rename from src/main/java/basic/datastructure/list/ArrayList.java
rename to src/basic/datastructure/list/ArrayList.java
diff --git a/src/main/java/basic/datastructure/list/LinkedList.java b/src/basic/datastructure/list/LinkedList.java
similarity index 100%
rename from src/main/java/basic/datastructure/list/LinkedList.java
rename to src/basic/datastructure/list/LinkedList.java
diff --git a/src/main/java/basic/datastructure/list/List.java b/src/basic/datastructure/list/List.java
similarity index 100%
rename from src/main/java/basic/datastructure/list/List.java
rename to src/basic/datastructure/list/List.java
diff --git a/src/main/java/basic/datastructure/map/AbstractMap.java b/src/basic/datastructure/map/AbstractMap.java
similarity index 100%
rename from src/main/java/basic/datastructure/map/AbstractMap.java
rename to src/basic/datastructure/map/AbstractMap.java
diff --git a/src/main/java/basic/datastructure/map/HashMap.java b/src/basic/datastructure/map/HashMap.java
similarity index 100%
rename from src/main/java/basic/datastructure/map/HashMap.java
rename to src/basic/datastructure/map/HashMap.java
diff --git a/src/main/java/basic/datastructure/map/ListMap.java b/src/basic/datastructure/map/ListMap.java
similarity index 100%
rename from src/main/java/basic/datastructure/map/ListMap.java
rename to src/basic/datastructure/map/ListMap.java
diff --git a/src/main/java/basic/datastructure/map/Map.java b/src/basic/datastructure/map/Map.java
similarity index 100%
rename from src/main/java/basic/datastructure/map/Map.java
rename to src/basic/datastructure/map/Map.java
diff --git a/src/basic/dfs/GraphDFS.java b/src/basic/dfs/GraphDFS.java
new file mode 100644
index 0000000..6790589
--- /dev/null
+++ b/src/basic/dfs/GraphDFS.java
@@ -0,0 +1,46 @@
+package basic.dfs;
+
+import basic.algorithm.AbstractGraphAlgorithm;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class GraphDFS extends AbstractGraphAlgorithm {
+
+ public static void main(String[] args) throws IOException {
+ GraphDFS dfs = new GraphDFS();
+ BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ dfs.init(br);
+ dfs.input(br);
+ dfs.printAsGraph();
+
+ System.out.println("DFS 탐색 시작 (시작점 입력): ");
+ System.out.print("행(row): ");
+ int startRow = Integer.parseInt(br.readLine());
+ System.out.print("열(col): ");
+ int startCol = Integer.parseInt(br.readLine());
+
+ dfs.dfs(startRow, startCol);
+ }
+
+ private static final int[] dx = {-1, 1, 0, 0}; // 상하좌우
+ private static final int[] dy = {0, 0, -1, 1};
+
+ private void dfs(int x, int y) {
+ visited[x][y] = true;
+ printAsVisited();
+ // 4방향 탐색
+ for (int i = 0; i < 4; i++) {
+ int nx = x + dx[i];
+ int ny = y + dy[i];
+
+ // 경계 체크 + 방문 안함 + 이동 가능 (1인 경우)
+ if (nx >= 0 && nx < field.length &&
+ ny >= 0 && ny < field[0].length &&
+ !visited[nx][ny] && field[nx][ny] == 1) {
+ dfs(nx, ny);
+ }
+ }
+ }
+}
diff --git a/src/main/java/basic/algorithm/DFS.java b/src/basic/dfs/TreeDFS.java
similarity index 82%
rename from src/main/java/basic/algorithm/DFS.java
rename to src/basic/dfs/TreeDFS.java
index 7a5a38a..c8448ff 100644
--- a/src/main/java/basic/algorithm/DFS.java
+++ b/src/basic/dfs/TreeDFS.java
@@ -1,6 +1,6 @@
-package basic.algorithm;
+package basic.dfs;
-import java.io.FilterOutputStream;
+import basic.algorithm.AbstractTreeAlogorithm;
/*
@@ -10,7 +10,7 @@
dfs 의 경우 0 1 3 4 5 6
*/
-public class DFS extends AbstractTreeAlogorithm{
+public class TreeDFS extends AbstractTreeAlogorithm {
public static void main(String[] args){
printAsBinaryTree();
diff --git a/src/main/java/basic/practice/problem3_1.java b/src/basic/practice/problem3_1.java
similarity index 100%
rename from src/main/java/basic/practice/problem3_1.java
rename to src/basic/practice/problem3_1.java
diff --git a/src/main/java/basic/sort/ArrayGenerator.java b/src/basic/sort/ArrayGenerator.java
similarity index 100%
rename from src/main/java/basic/sort/ArrayGenerator.java
rename to src/basic/sort/ArrayGenerator.java
diff --git a/src/main/java/basic/sort/Sort.java b/src/basic/sort/Sort.java
similarity index 100%
rename from src/main/java/basic/sort/Sort.java
rename to src/basic/sort/Sort.java
diff --git a/src/main/java/basic/sort/SortMain.java b/src/basic/sort/SortMain.java
similarity index 100%
rename from src/main/java/basic/sort/SortMain.java
rename to src/basic/sort/SortMain.java
diff --git a/src/main/java/basic/sort/impl/Bubble.java b/src/basic/sort/impl/Bubble.java
similarity index 100%
rename from src/main/java/basic/sort/impl/Bubble.java
rename to src/basic/sort/impl/Bubble.java
diff --git a/src/main/java/basic/sort/impl/Insert.java b/src/basic/sort/impl/Insert.java
similarity index 100%
rename from src/main/java/basic/sort/impl/Insert.java
rename to src/basic/sort/impl/Insert.java
diff --git a/src/main/java/basic/sort/impl/Merge.java b/src/basic/sort/impl/Merge.java
similarity index 100%
rename from src/main/java/basic/sort/impl/Merge.java
rename to src/basic/sort/impl/Merge.java
diff --git a/src/main/java/basic/sort/impl/Quick.java b/src/basic/sort/impl/Quick.java
similarity index 100%
rename from src/main/java/basic/sort/impl/Quick.java
rename to src/basic/sort/impl/Quick.java
diff --git a/src/main/java/basic/sort/impl/Select.java b/src/basic/sort/impl/Select.java
similarity index 100%
rename from src/main/java/basic/sort/impl/Select.java
rename to src/basic/sort/impl/Select.java
diff --git a/src/main/java/basic/star/Star1.java b/src/basic/star/Star1.java
similarity index 100%
rename from src/main/java/basic/star/Star1.java
rename to src/basic/star/Star1.java
diff --git a/src/main/java/basic/star/Star2.java b/src/basic/star/Star2.java
similarity index 100%
rename from src/main/java/basic/star/Star2.java
rename to src/basic/star/Star2.java
diff --git a/src/main/java/basic/star/Star3.java b/src/basic/star/Star3.java
similarity index 100%
rename from src/main/java/basic/star/Star3.java
rename to src/basic/star/Star3.java
diff --git a/src/main/java/basic/star/Star4.java b/src/basic/star/Star4.java
similarity index 100%
rename from src/main/java/basic/star/Star4.java
rename to src/basic/star/Star4.java
diff --git a/src/main/java/basic/star/Star5.java b/src/basic/star/Star5.java
similarity index 100%
rename from src/main/java/basic/star/Star5.java
rename to src/basic/star/Star5.java
diff --git a/src/main/java/basic/star/Star5_2.java b/src/basic/star/Star5_2.java
similarity index 100%
rename from src/main/java/basic/star/Star5_2.java
rename to src/basic/star/Star5_2.java
diff --git a/src/main/java/basic/star/Star5_3.java b/src/basic/star/Star5_3.java
similarity index 100%
rename from src/main/java/basic/star/Star5_3.java
rename to src/basic/star/Star5_3.java
diff --git a/src/main/java/basic/star/Star5_3_2.java b/src/basic/star/Star5_3_2.java
similarity index 100%
rename from src/main/java/basic/star/Star5_3_2.java
rename to src/basic/star/Star5_3_2.java
diff --git a/src/main/java/basic/star/Star6.java b/src/basic/star/Star6.java
similarity index 100%
rename from src/main/java/basic/star/Star6.java
rename to src/basic/star/Star6.java
diff --git a/src/main/java/basic/star/Star7.java b/src/basic/star/Star7.java
similarity index 100%
rename from src/main/java/basic/star/Star7.java
rename to src/basic/star/Star7.java
diff --git a/src/main/java/basic/star/Star8.java b/src/basic/star/Star8.java
similarity index 100%
rename from src/main/java/basic/star/Star8.java
rename to src/basic/star/Star8.java
diff --git a/src/main/java/basic/star/Star9.java b/src/basic/star/Star9.java
similarity index 100%
rename from src/main/java/basic/star/Star9.java
rename to src/basic/star/Star9.java
diff --git a/src/main/java/basic/star/StarInterface.java b/src/basic/star/StarInterface.java
similarity index 100%
rename from src/main/java/basic/star/StarInterface.java
rename to src/basic/star/StarInterface.java
diff --git a/src/main/java/basic/star/StarMain.java b/src/basic/star/StarMain.java
similarity index 100%
rename from src/main/java/basic/star/StarMain.java
rename to src/basic/star/StarMain.java
diff --git a/src/main/java/basic/star/StarUbin5_2.java b/src/basic/star/StarUbin5_2.java
similarity index 100%
rename from src/main/java/basic/star/StarUbin5_2.java
rename to src/basic/star/StarUbin5_2.java
diff --git a/src/main/java/basic/star/StartUbin5_2_2.java b/src/basic/star/StartUbin5_2_2.java
similarity index 100%
rename from src/main/java/basic/star/StartUbin5_2_2.java
rename to src/basic/star/StartUbin5_2_2.java
diff --git a/src/bkd/array/B11328.java b/src/bkd/array/B11328.java
new file mode 100644
index 0000000..086ad8e
--- /dev/null
+++ b/src/bkd/array/B11328.java
@@ -0,0 +1,52 @@
+package bkd.array;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B11328 {
+
+ static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ int[] alph;
+
+ while(n-->0){
+ String[] input = br.readLine().split(" ");
+ alph = new int['z'-'a'+1];
+
+ boolean possible = true;
+ for(int i = 0 ; i < input[0].length();i++){
+ char first = input[0].charAt(i);
+ alph[first-'a']++;
+ }
+
+ for(int i = 0 ; i < input[1].length();i++){
+ char second = input[1].charAt(i);
+ alph[second-'a']--;
+ }
+
+ for(int i = 0; i a) sb.append(a).append(" ");
+
+ }
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/bkd/base_code_create2/B1267.java b/src/bkd/base_code_create2/B1267.java
new file mode 100644
index 0000000..c366045
--- /dev/null
+++ b/src/bkd/base_code_create2/B1267.java
@@ -0,0 +1,44 @@
+package bkd.base_code_create2;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B1267 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+ int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
+
+ int Y = 0;
+
+ int M = 0;
+
+ for(int time : input){
+ if(time == 0){
+ continue;
+ }
+
+ Y += (time/30+1)*10;
+ M += (time/60+1)*15;
+ }
+
+ int min = Math.min(Y,M);
+
+ if(Y==min){
+ sb.append("Y").append(" ");
+ }
+ if(M==min){
+ sb.append("M").append(" ");
+ }
+ sb.append(min);
+
+ System.out.print(sb);
+ }
+}
diff --git a/src/bkd/base_code_create2/B15552.java b/src/bkd/base_code_create2/B15552.java
new file mode 100644
index 0000000..c67945a
--- /dev/null
+++ b/src/bkd/base_code_create2/B15552.java
@@ -0,0 +1,31 @@
+package bkd.base_code_create2;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B15552 {
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+
+ int n = Integer.parseInt(br.readLine());
+
+
+ int[] input;
+ for(int i = 0; i < n; i++){
+ input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
+
+ sb.append(input[0]+input[1]).append("\n");
+
+ }
+
+
+ System.out.print(sb);
+ }
+
+
+}
diff --git a/src/bkd/base_code_create2/B2309.java b/src/bkd/base_code_create2/B2309.java
new file mode 100644
index 0000000..719d7ec
--- /dev/null
+++ b/src/bkd/base_code_create2/B2309.java
@@ -0,0 +1,54 @@
+package bkd.base_code_create2;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Arrays;
+
+public class B2309 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ private static boolean done = false;
+
+ public static void main(String[] args) throws IOException {
+
+ int[] inputs = new int[9];
+
+ for(int i = 0; i < inputs.length; i++) {
+ inputs[i] = Integer.parseInt(br.readLine());
+ }
+
+ Arrays.sort(inputs);
+
+ backTraking(inputs, 1,inputs[0],1,inputs[0]+"");
+ backTraking(inputs, 1,0,0,"");
+
+
+ System.out.print(sb);
+ }
+
+
+ static void backTraking(int[] inputs, int index , int sum, int num,String result) {
+
+ if(sum > 100||done||index>=9||num>7){
+ return;
+ }
+
+ int nextNum = num+1;
+ int nextSum = sum+inputs[index];
+ String nextResult = result +"\n"+ inputs[index];
+
+ if(nextNum == 7&&nextSum==100){
+ done = true;
+ sb.append(nextResult);
+ }
+
+ backTraking(inputs,index+1,sum,num,result);
+ backTraking(inputs,index+1,nextSum,nextNum,nextResult);
+
+ }
+
+}
diff --git a/src/bkd/base_code_create2/B2438.java b/src/bkd/base_code_create2/B2438.java
new file mode 100644
index 0000000..11bb473
--- /dev/null
+++ b/src/bkd/base_code_create2/B2438.java
@@ -0,0 +1,24 @@
+package bkd.base_code_create2;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+public class B2438 {
+
+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
+
+ private static StringBuilder sb = new StringBuilder();
+
+ public static void main(String[] args) throws IOException {
+ int n = Integer.parseInt(br.readLine());
+
+ for(int i = 0 ;i list = new ArrayList<>();
-
- Assertions.assertEquals(0,list.getSize());
- }
-
- @Test
- public void testAddAndGet() {
- ArrayList list = new ArrayList<>();
- list.add("apple");
- list.add("banana");
-
- assertEquals(2, list.getSize());
- assertEquals("apple", list.get(0));
- assertEquals("banana", list.get(1));
- }
-
- @Test
- public void testInsert() {
- ArrayList list = new ArrayList<>();
- list.add("a");
- list.add("c");
- list.insert("b", 1);
-
- assertEquals("b", list.get(1));
- assertEquals(3, list.getSize());
- }
-
- @Test
- public void testRemove() {
- ArrayList list = new ArrayList<>();
- list.add("x");
- list.add("y");
- list.add("z");
-
- list.remove("y");
- assertEquals(2, list.getSize());
- assertEquals("z", list.get(1));
- }
-
- @Test
- public void testClear(){
- ArrayList list = new ArrayList<>();
-
- list.add("x");
- list.add("y");
- list.add("z");
-
- list.clear();
-
- assertEquals(0,list.getSize());
- }
-
- @Test
- public void testOutOfBounds(){
- ArrayList list = new ArrayList<>();
-
- list.add("x");
-
- assertThrows(ArrayIndexOutOfBoundsException.class,()->list.get(10));
- }
-
- @Test
- public void testRejectNull(){
- ArrayList list = new ArrayList<>();
-
- assertThrows(IllegalArgumentException.class,()->list.add(null));
- }
-}
diff --git a/src/test/java/datastructure/list/LinkedListTest.java b/src/test/java/datastructure/list/LinkedListTest.java
deleted file mode 100644
index 7121ce2..0000000
--- a/src/test/java/datastructure/list/LinkedListTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package datastructure.list;
-
-
-import basic.datastructure.list.LinkedList;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class LinkedListTest {
-
- private LinkedList list;
-
- @BeforeEach
- void setUp() {
- list = new LinkedList<>();
- }
-
- @Test
- void testAddAndGet() {
- list.add("A");
- list.add("B");
- list.add("C");
-
- assertEquals(3, list.getSize());
- assertEquals("A", list.get(0));
- assertEquals("B", list.get(1));
- assertEquals("C", list.get(2));
- }
-
- @Test
- void testInsert() {
- list.add("A");
- list.add("C");
- list.insert("B", 1);
-
- assertEquals(3, list.getSize());
- assertEquals("A", list.get(0));
- assertEquals("B", list.get(1));
- assertEquals("C", list.get(2));
- }
-
- @Test
- void testUpdate() {
- list.add("A");
- list.update(0, "Z");
-
- assertEquals("Z", list.get(0));
- }
-
- @Test
- void testDelete() {
- list.add("A");
- list.add("B");
- list.delete(0);
-
- assertEquals(1, list.getSize());
- assertEquals("B", list.get(0));
- }
-
- @Test
- void testRemove() {
- list.add("A");
- list.add("B");
- list.add("A");
-
- list.remove("A");
-
- assertEquals(2, list.getSize());
- assertEquals("B", list.get(0));
- assertEquals("A", list.get(1));
- }
-
- @Test
- void testRemoveAll() {
- list.add("A");
- list.add("B");
- list.add("A");
-
- int removed = list.removeAll("A");
-
- assertEquals(2, removed);
- assertEquals(1, list.getSize());
- assertEquals("B", list.get(0));
- }
-
- @Test
- void testContains() {
- list.add("A");
- list.add("B");
-
- assertTrue(list.contains("A"));
- assertFalse(list.contains("C"));
- }
-
- @Test
- void testFindFirstIndex() {
- list.add("X");
- list.add("Y");
- list.add("X");
-
- assertEquals(0, list.findFirstIndex("X"));
- assertEquals(1, list.findFirstIndex("Y"));
- assertEquals(-1, list.findFirstIndex("Z"));
- }
-
- @Test
- void testAddAll() {
- LinkedList another = new LinkedList<>();
- another.add("A");
- another.add("B");
-
- list.add("X");
- list.addAll(another);
-
- assertEquals(3, list.getSize());
- assertEquals("X", list.get(0));
- assertEquals("A", list.get(1));
- assertEquals("B", list.get(2));
- }
-
- @Test
- void testClear() {
- list.add("A");
- list.add("B");
-
- list.clear();
-
- assertEquals(0, list.getSize());
- assertFalse(list.contains("A"));
- }
-}
\ No newline at end of file
diff --git a/src/test/java/datastructure/map/HashMapTest.java b/src/test/java/datastructure/map/HashMapTest.java
deleted file mode 100644
index 0879e85..0000000
--- a/src/test/java/datastructure/map/HashMapTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-package datastructure.map;
-
-import basic.datastructure.map.HashMap;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-//통과
-//이후 Resize HashMap을 만들었을때를 대비해 수행 시간도 기록
-public class HashMapTest {
-
- private HashMap map;
-
- @BeforeEach
- public void setUp() {
- map = new HashMap<>();
- }
-
- @Test
- public void testPutAndGet() {
- map.put("apple", 1);
- map.put("banana", 2);
- map.put("carrot", 3);
-
- assertEquals(1, map.get("apple"));
- assertEquals(2, map.get("banana"));
- assertEquals(3, map.get("carrot"));
- }
-
- @Test
- public void testPutDuplicateKeyOverrides() {
- map.put("apple", 1);
- map.put("apple", 999); // override
-
- assertEquals(999, map.get("apple"));
- assertEquals(1, map.size()); // size should stay 1
- }
-
- @Test
- public void testContainsKey() {
- map.put("apple", 1);
- map.put("banana", 2);
-
- assertTrue(map.containsKey("apple"));
- assertTrue(map.containsKey("banana"));
- assertFalse(map.containsKey("carrot"));
- }
-
- @Test
- public void testRemove() {
- map.put("apple", 1);
- map.put("banana", 2);
-
- assertEquals(1, map.remove("apple"));
- assertNull(map.get("apple"));
- assertFalse(map.containsKey("apple"));
- assertEquals(1, map.size());
-
- assertNull(map.remove("not_exist"));
- }
-
- @Test
- public void testClear() {
- map.put("apple", 1);
- map.put("banana", 2);
- map.put("carrot", 3);
-
- assertFalse(map.isEmpty());
- map.clear();
- assertTrue(map.isEmpty());
- assertEquals(0, map.size());
- assertNull(map.get("apple"));
- }
-
- @Test
- public void testSize() {
- assertEquals(0, map.size());
- map.put("a", 1);
- map.put("b", 2);
- assertEquals(2, map.size());
- map.remove("a");
- assertEquals(1, map.size());
- map.clear();
- assertEquals(0, map.size());
- }
-
- @Test
- public void testIsEmpty() {
- assertTrue(map.isEmpty());
- map.put("x", 100);
- assertFalse(map.isEmpty());
- map.remove("x");
- assertTrue(map.isEmpty());
- }
-
- @Test
- public void testBulkInsertPerformance() {
- int N = 100;
- long start = System.nanoTime();
- for (int i = 0; i < N; i++) {
- map.put("key" + i, i);
- }
- long end = System.nanoTime();
-
- assertEquals(N, map.size());
- System.out.println("[PUT 100개] 걸린 시간: " + (end - start) / 1_000_000.0 + " ms");
- }
-
- @Test
- public void testGetPerformance() {
- int N = 100;
- for (int i = 0; i < N; i++) {
- map.put("key" + i, i);
- }
-
- long start = System.nanoTime();
- for (int i = 0; i < N; i++) {
- assertEquals(i, map.get("key" + i));
- }
- long end = System.nanoTime();
-
- System.out.println("[GET 100개] 걸린 시간: " + (end - start) / 1_000_000.0 + " ms");
- }
-
- @Test
- public void testRemovePerformance() {
- int N = 100;
- for (int i = 0; i < N; i++) {
- map.put("key" + i, i);
- }
-
- long start = System.nanoTime();
- for (int i = 0; i < N; i++) {
- assertEquals(i, map.remove("key" + i));
- }
- long end = System.nanoTime();
-
- assertEquals(0, map.size());
- System.out.println("[REMOVE 100개] 걸린 시간: " + (end - start) / 1_000_000.0 + " ms");
- }
-}
-
diff --git a/src/test/java/datastructure/map/ListMapTest.java b/src/test/java/datastructure/map/ListMapTest.java
deleted file mode 100644
index e380157..0000000
--- a/src/test/java/datastructure/map/ListMapTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package datastructure.map;
-
-
-import basic.datastructure.map.ListMap;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class ListMapTest {
-
- private ListMap map;
-
- @BeforeEach
- void setUp() {
- map = new ListMap<>();
- }
-
- @Test
- void testPutAndGet() {
- map.put("apple", 3);
- map.put("banana", 5);
- assertEquals(3, map.get("apple"));
- assertEquals(5, map.get("banana"));
- }
-
- @Test
- void testUpdateValue() {
- map.put("apple", 3);
- map.put("apple", 10); // overwrite
- assertEquals(10, map.get("apple"));
- }
-
- @Test
- void testContainsKey() {
- map.put("apple", 3);
- assertTrue(map.containsKey("apple"));
- assertFalse(map.containsKey("orange"));
- }
-
- @Test
- void testRemove() {
- map.put("apple", 3);
- map.put("banana", 5);
-
- Integer removed = map.remove("apple");
- assertEquals(3, removed);
- assertNull(map.get("apple"));
- assertFalse(map.containsKey("apple"));
-
- // Removing nonexistent key
- assertNull(map.remove("not_exist"));
- }
-
- @Test
- void testClear() {
- map.put("a", 1);
- map.put("b", 2);
- map.clear();
- assertEquals(0, map.size());
- assertTrue(map.isEmpty());
- }
-
- @Test
- void testSizeAndIsEmpty() {
- assertTrue(map.isEmpty());
- map.put("a", 1);
- assertEquals(1, map.size());
- map.put("b", 2);
- assertEquals(2, map.size());
- map.remove("a");
- assertEquals(1, map.size());
- map.remove("b");
- assertTrue(map.isEmpty());
- }
-
- @Test
- void testNullKeyThrowsException() {
- assertThrows(NullPointerException.class, () -> map.put(null, 1));
- assertThrows(NullPointerException.class, () -> map.get(null));
- assertThrows(NullPointerException.class, () -> map.remove(null));
- assertThrows(NullPointerException.class, () -> map.containsKey(null));
- }
-}
\ No newline at end of file