백준 3문제 이상 푸는 것을 목표로 10815번 문제를 풀던 중 시간초과로 오류가 계속 발생하여 어려움을 겪었다.
버블 탐색이 아닌 이진 탐색 기법을 활용하여 문제를 다시 풀었다.
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class baek10815_binarysearch {
public static void main(String[] args) throws IOException {
baek10815_binarysearch bs = new baek10815_binarysearch();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int first = Integer.parseInt(br.readLine());
int [] cards = new int[first];
st = new StringTokenizer(br.readLine());
for(int i=0;i<first;i++){
cards[i] =Integer.parseInt(st.nextToken());
}
//정렬하기(버블 정렬)
// for(int i=0;i<first;i++){
// for(int j=0;j<first-1;j++){
// if(cards[j]>cards[j+1]){
// int temp = cards[j];
// cards[j]=cards[j+1];
// cards[j+1]=temp;
// }
// }
// }
Arrays.sort(cards);
int second = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int [] card2 = new int[second];
for(int i=0;i<second;i++){
card2[i] = Integer.parseInt(st.nextToken());
System.out.print(bs.BinarySearch(cards,card2[i])+" ");
}
}
int BinarySearch(int arr[],int target){
int low = 0;
int high = arr.length-1;
int mid;
while(low<= high){
mid = (low+high)/2;
if(arr[mid]==target){
return 1;
}
else if(arr[mid]>target){
high = mid -1;
}
else{
low = mid +1;
}
}return 0;
}
}
import java.util.Scanner;
public class baek4673 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
for(int i=0;i<100;i++){
if(selfNumber(i+1)==null){
System.out.println(i+1);
}
}
}
private static String selfNumber(int i) {
if(i <= 10){
for(int j=1;j<11;j++){
int sum = 0;
String first = Integer.toString(j);
String [] split = first.split("");
int [] arr = new int[split.length];
for(int k=0;k<arr.length;k++){
arr[k] =Integer.parseInt(split[k]);
sum+=arr[k];
}
if(sum+j == i){
return Integer.toString(i);
}
}
}
else if(i<=100){
for(int j=10;j<101;j++){
int sum = 0;
String first = Integer.toString(j);
String [] split = first.split("");
int [] arr = new int[split.length];
for(int k=0;k<arr.length;k++){
arr[k] =Integer.parseInt(split[k]);
sum+=arr[k];
}
if(sum+j == i){
return Integer.toString(i);
}
}
}
else if(i<=1000){
for(int j=100;j<1000;j++){
int sum = 0;
String first = Integer.toString(j);
String [] split = first.split("");
int [] arr = new int[split.length];
for(int k=0;k<arr.length;k++){
arr[k] =Integer.parseInt(split[k]);
sum+=arr[k];
}
if(sum+j == i){
return Integer.toString(i);
}
}
}
return null;
}
}
import java.util.Scanner;
public class baek1978 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int [] k = new int[x];
int count = 0;
for(int i=0;i<x;i++){
k[i] = sc.nextInt();
int flag = 0; //소수이면 flag = 0
for(int j = 2 ; j < k[i] ; j++){
if(k[i] % j == 0){
flag = 1; //0으로 나눠질 경우 소수가 아님
}
}
if(k[i] == 1){
flag = 1; //입력이 1이면 소수가 아님
}
if(flag == 0){
count++;
}
}
System.out.println(count);
}
}
느낀점.
날이 많이 더워서 집에서 코딩하는 것에 어려움을 겪어 다음주부터는 카페나 도서관에서 모각코를 해야겠다는 생각을 하였다. 백준 세문제를 풀고 1463번 문제를 풀다가 문제가 막히게되어 SQLD에 관련한 기초적인 이론을 공부하였다. 학부 1학년 컴퓨터 프로그래밍 시간에 SQLite이라는 데이터베이스를 배웠었는데 엄청 오랜만에 읽는 것이라 새로웠다. 아마 학년이 올라가면 데이터베이스라는 과목을 배울텐데 그 수업을 예습할 겸 이번 방학에 공부하고자 한다. 백엔드인 SQL은 정보시스템 개발과 운영뿐만 아니라 보안을 하는 사람도 알아야한다고 한다. 모의 해킹을 하는 경우 SQL을 공격하는 방법도 있다고 한다. 방학동안 친구와 공부해보면서 지식을 쌓아야겠다. 날이 더운날 오랫동안 앉아서 공부하기는 힘들었지만 앞으로는 더 쾌적한 환경에서 공부해야겠다.
'2022여름방학_모각코' 카테고리의 다른 글
진저비어 팀: 모각코 3주차 모임 목표(22.07.27 / 수요일 / 14:00~17:00) (0) | 2022.07.27 |
---|---|
진저비어 팀: 모각코 2주차 모임 활동결과(22.07.13 / 수요일 / 14:00~17:00) (0) | 2022.07.13 |
진저비어 팀: 모각코 2주차 모임 목표(22.07.13 / 수요일 / 14:00~17:00) (0) | 2022.07.13 |
진저비어 팀: 모각코 1주차 모임 목표(22.07.06 / 수요일 / 14:00~17:00) (0) | 2022.07.06 |
진저비어 모각코 여름방학 모임 계획 (0) | 2022.06.23 |