diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..a0193bd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.10) + +# 1. 프로젝트 이름 설정 (원하는 이름으로 변경 가능) +project(MyProject) + +# 2. C++ 표준 설정 (C++11, 14, 17, 20 중 선택) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +# 3. 실행 파일 생성 +# add_executable(실행파일명 소스파일.cpp) +# 예: main.cpp를 컴파일하여 my_program이라는 실행 파일을 만듦 +add_executable(my_program /weekly/week02/BOJ_1965_상자넣기/Hexeong.cpp) \ No newline at end of file diff --git "a/weekly/week10/BOJ_12919_A\354\231\200B2/Hexeong.java" "b/weekly/week10/BOJ_12919_A\354\231\200B2/Hexeong.java" new file mode 100644 index 0000000..2d2084d --- /dev/null +++ "b/weekly/week10/BOJ_12919_A\354\231\200B2/Hexeong.java" @@ -0,0 +1,38 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; + +public class Main { + // AI의 피드백 : SB를 1개로 유지하고 process가 끝난 이후 원상태로 복구하는 방식으로 최적화하자. + public static void main(String[] args) throws Exception { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + String S = br.readLine(); + String T = br.readLine(); + + StringBuilder sb = new StringBuilder(T); + + System.out.println(process(sb, S) ? 1 : 0); + } + + private static boolean process(StringBuilder sb, String S) { + if (sb.toString().equals(S)) { + return true; + } + if (sb.length() <= S.length()) { + return false; + } + + if (sb.charAt(sb.length() - 1) == 'A' && process(removeAtoSb(sb), S)) { + return true; + } + return sb.charAt(0) == 'B' && process(reverseAndDeleteBtoSb(sb), S); + }; + + private static StringBuilder removeAtoSb(StringBuilder sb) { + return new StringBuilder(sb).deleteCharAt((sb.length() - 1)); + } + + private static StringBuilder reverseAndDeleteBtoSb(StringBuilder sb) { + return new StringBuilder(sb).reverse().deleteCharAt((sb.length() - 1)); + } +}