1. JLPT 단어 및 독해


공부 내용 및 문제 풀은것 등의 사진을 일단 내 컴퓨터에 파일형태로 킵;(저작권 문제)



2. 알고리즘 공부


백준 알고리즘 [1065번 한 수]


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import java.io.*;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
 
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 
        int cnt = 0;
        int x = Integer.parseInt(String.valueOf(br.readLine()));
 
        for(int i=1; i<x+1; i++){
            cnt += getHanNum(i);
        }
 
        bw.write(String.valueOf(cnt));
        bw.flush();
        bw.close();
    }
 
    private static int getHanNum(int num){
 
        int hanNum = num;
        int[] oneToEndArr = new int[String.valueOf(num).length()];      //index에 0부터 일의 자리의 숫자가 들어가는 배열
 
        if(oneToEndArr.length <= 2){        //어차피 0을 제외한 100 이하 자리는 전부 다 한수이기 때문에
            return 1;
        }else{
            int[] d = new int[oneToEndArr.length-1];        //100부터 1000까지는 여기에 들어와서 각 항의 차를 구한다.
            int j= 0, temp = 0;
 
            for(int i=0; i<oneToEndArr.length; i++){        //우선, 각 자릿수를 구해서 일의자리부터 끝자리까지에 해당하는 수를 oneToEndArr 배열에 넣어준다
                oneToEndArr[i] = hanNum%10;
                hanNum /= 10;
            }
 
            for(int i=oneToEndArr.length-1; i>0; i--){      //일의 자리와 십의 자리, 십의 자리와 백의 자리에 해당하는 차를 d 배열에 넣는다
                d[j] = oneToEndArr[i] - oneToEndArr[i-1];
                j++;
            }
            if(d[0== d[1]){                               //각 항의 차가 등차가 되는지 비교
                return 1;
            }else{
                return 0;
            }
        }
    }
}
cs

아쉬웠던 점: 입력이 1000이하의 숫자가 들어간다는게 조건이지만 1000이상의 자릿수가 입력이 됐을때에도 작동하게 만들고 싶어서 욕심을 내다보니 시간을 많이 잡아먹었다.

카테고리의 목적: 



   무엇을 할 것인가? 본 포스팅 카테고리에서는 JLPT와 알고리즘 공부한 내용을 포스팅 할 것인데, 사실 공부를 너무 게으르게 해서 목표치를 가지고 공부해서 JLPT N2 취득 및 알고리즘 공부 이 두 마리 토끼를 다 잡아볼 예정이다.


   어떻게 할 것인가? JLPT 시험에서 컷트라인을 넘겨도 N2 독해에서 과락이 나와서 취득이 어려우니 'JLPT 콕콕 찍어주마 N2 독해', '딱 한 권 JLPT N2단어장'으로 각각 20p, 1Day씩 공부하고, 알고리즘은 BOJ 단계별 풀어보기 부분에서 한 문제 이상씩 풀어서 공부한 내용을 간단히 사진첨부와 함께 시험 전 날인 12월 2일 전까지(일주일간) 포스팅할 것이다.


   왜 JLPT를 공부하나? 사실 공대생에게 어학능력이란 C, Java, React.js등 대중적인 컴퓨터언어능력을 높이는게 도움이 되지 어학능력은 크게 도움이 되질않는다. 하지만 나는 글로벌하게 인간관계를 구축하고 싶은 욕심이 있기도 하고, 나아가 이 능력을 증명해 추후 다른 분야에서도 활용하고 싶기떄문에 이 자격증을 따려고 한다. 굳이 JLPT만 준비하는 것도 아닐뿐더러, 해외 어학원 경험을 통해 외국인과도 편하게 말을 주고받을 수 있는 상태이다. 외국인 친구도 다수 사귀었고, 이 능력을 십분 활용해 OPIc시험에서도 공대생치고는 높은 점수를 받았다.(OPIc 시험을 준비할 떄엔 블로그를 쓸 생각을 하지않았으니 OPIc 포스팅은 패스)


   최종적으로? 일본어로 된 IT관련 기술블로그 포스팅 된 것을 번역해서 올려보자.



상세한 내용은 거두절미하고 오늘부터 스타트!


D-6



1. 일본어 단어 암기 및 문제 푼거


사진을 올리려했으나 저작권의 문제가 있으니 일단 올리고 비공개로 대체.... 하려했으나 최대 업로드 가능 용량이 10메가인 관계로 일단 킵;


2. 백준 알고리즘 [4673번 셀프넘버]


풀이 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import java.io.*;
 
public class Main {
 
    public static void main(String[] args) throws IOException {
 
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
        boolean[] isNotSelfNum = new boolean[10000];            //셀프넘버가 아닌건지를 물어보는 것이기 때문에 
                                                                // false -> 셀프넘버 , true -> 생성자가 있는 넘버
 
        for(int i=0; i<isNotSelfNum.length; i++){
            if(getDn(i)<10000){
                isNotSelfNum[getDn(i)] = true;
            }
        }
 
 
        for(int i=0; i<10000; i++){
            if(!isNotSelfNum[i]){
                bw.write(String.valueOf(i));
                bw.newLine();
                bw.flush();
            }
        }
        bw.close();
 
    }
 
    private static int getDn(int i){                //selfNumber가 아닌 수들을 반환
 
        int dn, thousand, hundred, ten, one;
 
        thousand = i/1000;
        hundred = i/100%10;
        ten = i/10%100%10;
        one = i%10;
 
        dn = i + thousand + hundred + ten + one;
 
        return dn;
    }
}
cs


헤맨 부분: 처음에는 12번째 for문의 진행이 아닌 while(true)문으로해서 getDn메소드로 반환받는 숫자가 10000보다 커지면 break문으로 탈출해서 더 이상 getDn의 매개변수로 숫자가 들어갈 일이 없게 즉, dn의 크기가 10000만 넘기만 한다면 다음 숫자를 적용시키지 않았다. 실제로 값을 넣어서 구해보면 d(9968) = 10000인데, d(9973) = 9999이다. 따라서 생성자가 있는데도 불구하고 셀프넘버로 들어가버린 숫자가 존재했고 그대로 출력해서 문제를 틀렸었던것.

+ Recent posts