1289 원재의 메모리 복구하기 문제 링크
#1
9분
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.io.FileInputStream;
class Solution
{
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
String memory = br.readLine();
int answer = 0;
char state = '0';
for(int i=0; i<memory.length(); i++) {
if(memory.charAt(i) != state) {
answer++;
state = nowState(state);
}
}
System.out.println("#"+test_case+" "+answer);
}
}
static char nowState(char state) {
if(state == '0') state = '1';
else if (state == '1') state = '0';
return state;
}
}

2817 부분 수열의 합 문제 링크
#1
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.io.FileInputStream;
import java.util.StringTokenizer;
class Solution
{
static int[] arr;
static int N;
static int K;
static int answer;
public static void main(String args[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T;
T=Integer.parseInt(br.readLine());
for(int test_case = 1; test_case <= T; test_case++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
K = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
arr = new int[N];
for(int i=0; i<N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
answer = 0;
dfs(0, 0);
System.out.println("#"+test_case+" "+answer);
}
}
static void dfs(int total, int level) {
if(total==K) {
answer++;
return;
}
if(level==N) return;
dfs(total+arr[level], level+1);
dfs(total, level+1);
}
}

- dfs로 금방 풀었는데 pass가 안 떠서 고민함
- 그냥 테케 별로 answer값을 초기화 안 해줘서 문제였음..
- 시험 때는 이러지말자..