Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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)
38 changes: 38 additions & 0 deletions weekly/week10/BOJ_12919_A와B2/Hexeong.java
Original file line number Diff line number Diff line change
@@ -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));
}
}
Loading