import java.util.*;
import java.io.*;
public class S4_1920 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
String[] arr = br.readLine().split(" ");
int m = Integer.parseInt(br.readLine());
String target[] = br.readLine().split(" ");
boolean check = false;
for(int i = 0; i<m; i++){
for(int j = 0; j<n; j++){
if(target[i].equals(arr[j])) check = true;
}
if(check) {
bw.write(String.valueOf(1));
}else{
bw.write(String.valueOf(0));
}
bw.write("\n");
check = false;
}
bw.flush();
bw.close();
}
}
손이 가는대로 선형탐색으로 풀었더니 출력은 잘 되었지만 시간초과로 계속 통과를 못해서 이분탐색으로 풀었다. 학교에서 알고리즘에 대해서 배울땐 왜 사용하는지 잘 체감이 안됐었는데 제한시간이 빠듯한 문제를 풀다보니 필요성을 느끼게 되었다. 머리로만 아는게 아니라 문제 풀 때도 자주 적용해봐야 잘 쓸 수 있을 것 같다.
import java.util.*;
public class S4_9012 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String[] answer = new String[num];
boolean check = true;
for (int i = 0; i < num; i++) {
String line = sc.next();
String[] arr = line.split("");
Stack<String> open = new Stack<String>();
if (arr[0].equals(")")) {
answer[i] = "NO";
continue;
}
loop:
for (int j = 0; j < arr.length; j++) {
if (arr[j].equals("(")) {
open.push(arr[j]);
}
else if (arr[j].equals(")")) {
if (!open.isEmpty()) open.pop();
else {
check = false;
break;
}
}
}
if (!open.isEmpty() || check == false) {
answer[i] = "NO";
open.clear();
} else
answer[i] = "YES";
check = true;
}
for (int i = 0; i < num; i++) {
System.out.println(answer[i]);
}
}
}
스택으로 푸는 괄호문제를 풀었다 학교에서 과제로 비슷한 문제를 풀었던 것 같아서 쉽게 풀 수 있었다.
import java.util.*;
import java.io.*;
public class S5_2751 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int num = Integer.parseInt(br.readLine());
int[] arr = new int[num];
for (int i = 0; i < num; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
for (int i = 0; i < num; i++) {
bw.write(String.valueOf(arr[i]));
bw.write("\n");
}
bw.flush();
bw.close();
}
}
'모각코 > 2022 하계 모각코' 카테고리의 다른 글
20220817 6주차 [진저비어] 모각코 결과 (0) | 2022.08.19 |
---|---|
20220817 6주차 [진저비어] 모각코 계획 (0) | 2022.08.19 |
20220810 5주차 [진저비어] 모각코 계획 (0) | 2022.08.10 |
220802 4주차 [진저비어] 모각코 결과 (0) | 2022.08.03 |
220802 4주차 [진저비어] 모각코 계획 (0) | 2022.08.03 |