아직 재귀에 대한 개념도, Tree에 대한 개념도 확실히 잡히지 않았지만

더 놓치면 점점 되돌리기 어려워 질 것 같아서 그날 배운것 정도는 어느정도 이해하고 넘어가야겠다



Graph에는 대표적으로 BFS, DFS가 있으며

BFS(Breadth-First Search)의 특징으로는

 

... 같은 개념보다는

2차원 배열로 나타낸 매트릭스가 나는 도저히 이해가 잘 안간다

오늘은 Graph의 개념이나, 구현방법보다는 매트릭스를 먼저 이해해놔야 겠다

 

まだ再帰の概念も、Treeの概念もはっきりと理解してないけど
これ以上後回したらどんどん詰まりそうなので

その日学んだことくらいはある程度理解して進めよう

Graphには代表的にBFS、DFSがあり
BFS(Breadth-First Search)の特徴としては

... みたいな概念よりは
二次元配列で表した行列が俺には全く理解できない
今日はGraphの概念や実装方法よりは行列を理解しておこう


조건

0번째: 간선의 시작 정점 (0 이상의 정수)
1번째: 간선의 도착 정점 (0 이상의 정수)
2번째: 방향성 (1 == 일시 무향, 0 == 일시 방향)

 

입출력 예시

 

条件
0番目:幹線の始点(0 以上の整数)
1番目:幹線の終点(0 以上の整数)
2つ目:方向性(1  == 一時無香、 0 == 一時方向)

入出力例

int[][] output1 = createMatrix(new int[][]{
	{0, 3, 0},
	{0, 2, 0},
	{1, 3, 0},
	{2, 1, 0},
});

System.out.println(output1);
/**
 * [
 *  [0, 0, 1, 1],
 *  [0, 0, 0, 1],
 *  [0, 1, 0, 0],
 *  [0, 0, 0, 0]
 * ]
 */

 

int[][] output1 = createMatrix(new int[][]{
{0, 3, 0} 시작정점 : 0
始点:0
도착정점 : 3
終点:3
일시 방향
有向
{0, 2, 0} 시작정점 : 0
始点:0
도착정점 : 2
終点:2
일시 방향
有向
{1, 3, 0} 시작정점 : 1
始点:1
도착정점 : 3
終点:3
일시 방향
有向
{2, 1, 0} 시작정점 : 2
始点:2
도착정점 : 1
終点:1
일시 방향
有向
  0정점
0頂点
1정점
1頂点
2정점
2頂点
3정점
3頂点
0정점
0頂点
0 0   1     1  
1정점
1頂点
0 0 0   1  
2정점
2頂点
0   1   0 0
3정점
3頂点
0 0 0 0

 


int[][] output2 = createMatrix(new int[][]{
	{0, 2, 0},
	{2, 4, 1},
	{1, 3, 1},
	{2, 1, 0},
]);

System.out.println(output2);
/**
 * [
 *  [0, 0, 1, 0, 0],
 *  [0, 0, 0, 1, 0],
 *  [0, 1, 0, 0, 1],
 *  [0, 1, 0, 0, 0],
 *  [0, 0, 1, 0, 0],
 * ]
 */
int[][] output2 = createMatrix(new int[][]{
{0, 2, 0} 시작정점 : 0
始点:0
도착정점 : 2
終点:2
일시 방향
有向
{2, 4, 1} 시작정점 : 2
始点:2
도착정점 : 4
終点:4
일시 무향
無向
{1, 3, 1} 시작정점 : 1
始点:1
도착정점 : 3
終点:3
일시 무향
無向
{2, 1, 0} 시작정점 : 2
始点:2
도착정점 : 1
終点:1
일시 방향
有向
0정점
0頂点
0 0   1   0 0
1정점
1頂点
0 0 0   1   0
2정점
2頂点
0   1   0 0   1  
3정점
3頂点
0   1   0 0 0
4정점
4頂点
0 0   1   0 0

 

양방향(일시 무향)의 경우

예를들면 시작정점이 2, 도착정점이 4 일 경우

2행 4열과, 4행 2열 둘 다 값이 할당(간선이 연결됨)되게 되는것인가?

 

매트릭스 조건을 보면 이제 인접행렬을 어느정도 그릴수 있을거 같은데

이걸 어디다 쓰지...?

도대체 어떻게 응용하게 되는거지?

 

오늘로써 Section2 첫번째 페어학습이 끝나고

내일 두번째 페어학습이 시작된다

내일부터는 Coding Test 준비 커리큘럼이며

가장 먼저 배우게 될 것은 Greedy Algorithm 이다

 

그리드 알고리즘

탐욕이라는 건가?

정말 이름만 들어보면 가슴이 설레고 와 이건 뭘까 하는데

막상 껍질을 벗겨보면 그냥 모르는게 나았을걸 하고 후회하게 된다

 

어서 자야겠다

 

両方向(無向)の場合
例えば始点が2、終点が4の場合
2行4列と、4行2列の両方ともデータが与えられるようになるのか?

行列の条件を見ると、 隣接行列をある程度描けるように理解したと思うけど
これをどこに使うのか、、、
一体どうやって応用すればいいのか?

今日でSection2最初のペア学習が終わって
明日2回目のペア学習が始まる
明日からはCoding Test準備カリキュラムであり
最初に学ぶことはGreedy Algorithmだ
グリッドアルゴリズム

貪欲アルゴリズムってことかな?
本当に名前だけ聞いてみると胸がときめいて わぁ、これは何だろうと思うんですけど
いざ皮をむいてみれば、知らない方がよかったと後悔するようになる

早く寝よう


어제 다짐했던 일을 실천하려고 한다

먼저 내 수준에 맞는 문제들을 최대한 많이 풀어보려고 한다

"백준" 이라는 사이트에 문제가 수준별로 방대하게 존재하였다

다만 수업들으며 풀때처럼 ChatGPT나, Reference Code를 참고해가며

풀어버리면 아무런 의미가 없게 될 것이고

더군다나 문제를 풀기 전 까진 Reference Code조차 열람이 불가능하다

(애초에 Reference Code가 있는지부터 의문이다, 굳이 찾지 말아야지)

 

昨日自分と約束したことを実践しようと思う
まず自分のレベルに合った問題をできるだけ多く解いてみようと思う
「BAEKJOON」というサイトに問題がレベル別に膨大に存在してた
ただ授業聞く時のように困った時にすぐChatGPTやReference Codeを参考にしながら
解いてしまったら何の意味もなくなるだろうし
しかも問題を解くまではReference Codeさえ閲覧できないことになっていた
(そもそもReference Codeがあるかどうかから疑問だ、あえて探すのはやめておこう)


 

수업은 이미 자료구조를 달리고 있으나 더 늦기전에 

"수학적 사고 능력"을 단련하며 내가 가장 어려워하고 있는

Requirement를 읽고 이해하고, 이해한 내용을 Code로 옮기는것을

단련하는게 가장 큰 목표다

문제에 봉착했을 때 스스로 생각하고 스스로 답을 내리기 까지의 여정

너무 늦어버린 것 같지만 지금이라도 찾아낸 이 공부법으로 열심히 쫓아가봐야겠다


사실 Do it! 알고리즘 책이랑 기초문법 책을 사려고 주문까지 완료했었는데

일단 인터넷에 있는 문제를 먼저 풀어보고 결정해야겠다고 생각이들어

바로 주문취소했다

 

진도를 따라 잡을때 까진 최소 하루에 10문제는 풀어봐야 겠다

 

授業はすでにデータ構造を進んでいるが、もっと遅くなる前に 
「数学的思考能力」を鍛えながら俺が一番難しがっている
Requirementを読んで理解し、理解した内容をCodeに移すことを
鍛えるのが一番の目標だ
問題に直面したときに自ら考え、自分で答えを出すまでの道のり
遅すぎたようだが、今からでも見つけたこの勉強方法で一生懸命追いかけてみよう


実はDo it!アルゴリズムの本と基礎文法の本を買おうとして注文まで完了したけど
一応インターネットにある問題を先に解いてみて決めようと思って
注文をキャンセルした


進度に追いつくまでは少なくとも1日に10問は解いてみよう


오늘 가장 곤란했던 문제 하나를 복습해봐야겠다

 

Requirement

문제 2588번

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력
첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

출력
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

 

...

(1)은 항상 고정된 수 이며

(2)를 각각의 "3", "8", "5" 로 쪼개어 각 배열로 생성하고

for문으로 배열을 순회하며 (1)를 각각 "3", "8", "5" 에 곱하고,

곱할때마다 출력하게 만들어야겠다고 생각했다

 

그러기 위해선 (2)를 먼저 정수로 입력받은 다음, 문자열(String)으로 변환해주고

계산할때 다시 정수로 변환하여 수식을 실행하게끔 만들려고 했다

 

(6)의 최종 계산식은, 그냥 (1)과 (2)를 곱하기만 하면 되니 신경쓰지 않기로 했다

import java.util.*;
public class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        int a;
        int b;
        int result = 0;
        a = sc.nextInt();
        b = sc.nextInt();

        String num = Integer.toString(b);

        for (int i = num.length() - 1; i >= 0; i--) {
            int array = Character.getNumericValue(num.charAt(i));
            int numplus = a * array;
            System.out.println(numplus);
            result = result + numplus;

            }
        System.out.println(a*b);
    }
}

 

간단한 문제임에도 풀이하는데 2시간은 걸린거 같다

하지만 이 문제를 풀면서 많은것을 느끼게 되었다

1. BootCamp에서는 입력받을 변수를 선언해줬으나, 직접 변수까지 선언해야하는 상황을 만나게 되어 구현시켜보게 되었다

2. 풀이에 대한 각 수식은 찾아보면서 하되, 기본 개념은 확실하게 이해하고 외워야겠다

3. IntelliJ에서 System.out.print... 는 sout으로 간단하게 입력 가능하고

    여기에 더해 fori로 기본 for문을 입력할수 있다

 

재미있었다


今日一番困った問題を一つ復習してみよう

Requirement
問題 2588番

(3桁)×(3桁)は、次のような過程を経て行われる。

(1)と (2)位置に入る3桁の自然数が与えられるとき、(3)、(4)、(5)、(6)位置に入る値を求めるプログラムを作成しなさい。

入力
1列目に(1)の位置に入る3桁自然数が、2列目に(2)の位置に入る3桁自然数が与えられる。

出力
1行目から4行目まで順番に(3)、(4)、(5)、(6)に入る値を出力する。

...

(1)は常に固定された数であり
(2)をそれぞれの "3", "8", "5" に分割して各配列に与えて
ループ処理で配列を巡回し、(1)をそれぞれ「3」、「8」、「5」にかけ、
かけるたびに出力させるべきだと思った

 

そのためには、(2)を先に整数で入力してもらい、文字列(String)に変換し
計算するときにまた整数に変換して数式を実行しようとした

(6)の最終計算式は、ただ(1)と(2)を掛けるだけなので気にしないことにした

 

。。。(Codeは上に載せたのを参考)

 

簡単な問題なのに解くのに2時間はかかってしまった
しかし、この問題を解いてみていろんなことを知ることができた
1. BootCampでは入力を受ける変数を宣言してくれたが、直接変数まで宣言しなければならない状況に

 遭遇して実現させてみることになった
2. 解釈に対する各修飾は探しながらするが、基本概念は確実に理解して覚えなければならない
3. IntelliJでSystem.out.print... はsoutで簡単に入力でき
    これに加えてforiで基本ループ処理を入力することができる

面白かった


Terminology Translation

Japanese Korean Direct Translation
データ構造 자료구조 데이터구조
修飾 수식 수식
繰り返し処理(ループ処理) for문 되풀이처리(루프처리)
反復処理 while문 반복처리

 

'Solo Study' 카테고리의 다른 글

JAVA Spring API 계층  (0) 2023.07.02

백엔드 부트캠프를 수강하게 된 지 약 1개월이 지났다

어김없이 빠른속도로 진도를 나가고 있고

예상했던대로 진도를 따라갈 수 없는 상황이 벌어졌다

당연히도 그에 따라 고민은 늘어만 가고 많은 이들은

배우면서 수없이 많은 고비를 마주칠 것이고

고민을 한 만큼 성장한다고 한다

 

Back-end boot Campに入ってから約一ヶ月がたった

相変わらず早い速度で授業は進んでいて

予想通りその速度に追いかけられない状況になってしまった

当たり前にそれについて悩みはどんどん増えていて多くの人々は

学びながら数えきれないほど苦難に遭遇し、

悩みの数ほど成長すると言っている


도대체 무엇이 고민인가? 자신에게 되물어보았다

몇개의 큰 항목으로 나눌 수 있었고 항목에 대한 상세한 고민을 도출시킬 수 있었다

 

1. 문제 해결에 대한 열정이 부족하다

2. 나 자신을 통제할 수 없다

3. 공부를 방해하는 요소가 있다

4. 아직까지도 프로그래밍을 보험으로써 생각하고 있다

 

오늘은 상기 4가지 항목에 대한 고민과 그에 대한 나의 답을 찾기까지

생각을 해 보았다

 

一体何が悩みなのか自分に問い返してみた

何個かの大きい項目に分けることができて、各項目についての詳しい悩みを出すのができた

 

1、問題解決についての熱情が足りない

2、自分自身をコントロールができない

3、勉強を邪魔する要素がある

4、今でもプログラミングを保険として考えている

 

今日は上の四つの項目についての悩みと答えを見つけるまで

考えてみた


1. 문제해결에 대한 열정이 부족하다

 

먼저 내가 문제를 푸는 과정부터 생각을 해보았다

  1) 요구사항을 읽고 원하는것이 무엇인지 파악한다

  2) 요구사항을 파악했으나, 어떤식으로 문제를 풀어야 할 지 감이 안잡힌다

  3) Reference Code를 확인하여 이렇게 푸는구나 하고 확인한다

  4) 참고만 하는게 아니라 그냥 오픈북 형식으로 보면서 이해하는 척 하면서 옮겨적는다

 

지금까지 경험해보지 못한 분야였고, 모르니까 당연히 Reference Code를

참고하는건 당연하다고 생각하고 있다

하지만 가장 큰 문제는 어떠한 문제를 직면했을 때 풀어보려 노력을 하지 않고

Reference Code 및 Chat GPT에 전적으로 의존하려 한다는 것이다

아마 문제 해결에 대한 욕구가 결여되어 있진 않은가 생각이 든다

하나도 모르겠다 -> 참고할 자료가 있으니 참고하며 풀고 넘기자

악순환이 계속되고 있다

 

그럼 어떻게 해결할 수 있을까

"하나도 모르겠다" 가 가장 큰 원인

이를 해결하려면 먼저 "조금이라도 알겠다" 정도는 되야 문제 해결을 시도해볼 것이고

답을 찾아가는 길을 떠날 수 있을것이다 내 수준에 맞는 문제를 최대한 풀어보자

 

1、問題解決についての熱情が足りない

 

まず俺が問題を解く過程から考えてみた

1)Requirementsを読んで望んでいるのが何か把握する

2)要求することを把握したが、どのように問題を解くかわからない

3)提供されてるReference Codeを確認して答えを読みながら理解してみる

4)確認だけするのではなく、理解できたふりをしながらオープンブックのように書き始める

 

今まで経験したことない分野であり、Reference Codeを参考するのは当たり前だと

考えている

だけど大きな問題は、とあるトラブルにあった時、解決しようと努力もせずに

すぐReference CodeとかChat GPTに全敵に依存しようとしている

多分トラブル解決についての欲求が欠如していると思う

全くわからない→参考できる資料があるからさっさと解いて次に行こう

悪循環が続いている

 

じゃあどうやったら解決できるのか?

「全くわからない」が一番大きい原因

これを解決するにはまず「少しわかりそう」にならないと問題を解いてみようと考え始めないし

答えを見つかる旅に出ることができるはずだ、自分のレベルに合う問題をもっと解いてみよう


2. 나 자신을 통제할 수 없다

 

이전 회사에서 기술을 익힐때야 회사 라는 공간에서 방해받는 요소 없이 쭉

일직선으로 달릴 수 있었고 덕분에 빠른속도로 습득이 가능했다

 

집에서 공부하려고하니 지금껏 나는 "집"이란 "휴식"할수 있는 공간으로만

생각해 왔기에, 조금이라도 지치면 바로 침대로 들어가거나, 유튜브를 켠다

이런 습관때문에 자기주도학습에 큰 어려움을 겪고 있는게 아닐까 싶다

 

그럼 어떻게 해결할 수 있을까

집에서 공부가 힘들다면 1인 독서실을 알아보거나, 근처 카페에서 공부를

해보는건 어떨까 고려해보자

 

2、自分自身をコントロールができない

 

前の会社で記述を学ぶときは会社という空間で邪魔入る要素なく

ずっと真っ直ぐに走れた、おかげで早い速度で記述を学ぶことができた

 

家で勉強しようとしたら今までの俺は「家」は「休む」という空間に

考えてきたせいで、少しでも疲れるとすぐベットに入ったり

ユーチューブをつけてしまう

こんな習慣のせいで自己主導学習ができてないんじゃないかなと思ってしまう

 

じゃあどうやったら解決できるのか?

家で勉強ができないなら、カフェとか、自習室を借りて勉強するのを

検討しよう


3. 공부를 방해하는 요소가 있다

 

2와 겹치는 내용일 수도 있겠다

퇴사한지 3개월이 지났지만 아직도 전 직장때문이 나를 괴롭히고 있다

퇴사 후 업무연락을 안받았다는 사유로 사측은 퇴직금 지급을 거부하였고

이를 받아내는데까지 2개월이 소요되었다

이 과정중에 노무사 사무실을 들락날락 하며 상담을 받았고 추가적으로

보수 없이 노동을 제공한 대가에 대하여 청구를 받을 수 있다고하여

현재 이에대한 진정 진행중이며 오히려 사측은 나를 고발한다고 하고있다

 

켕기는일은 전혀 없으며

오히려 퇴사일을 늦춰가며 인수인계까지 더 해주고 나왔고, 자료까지 만들어뒀다

사측이 주장하는 "내가 퇴사 후 연락을 안받음으로 인하여 불이익을 받았다"는 입증되기 어려울것이다

많은 사람들은 "그거 전화좀 받아주지 도의를 저버린거 아니냐" 라고 이야기를 할 수도 있겠다

그러면 다시 되묻겠다

지급되는 페이없이 하루에도 밤낮없이 수십통씩 전화오는걸 다 대응해줄수 있겠는가?

이후에 무슨일이 있을줄 알고 외부인이 보안자료를 열람하며 대신 일을 해주겠는가?

 

수년간 나는 회사의 그 누구보다 열심히 일했다고 자신있게 말할 수 있다

최저시급도 안되는 OT수당 받아가며 밤 12시까지 일하고도 싫은소리 안하며

너무 힘들어서 그러는데 OT수당 제대로 챙겨주십쇼 했더니 OT수당 제도 자체를 없애버려도

그래도 나는 열심히 일했다

오히려 그게 독이 되었던걸까 아파서 병원다니고 하다보니 사람 꺾이는거 한순간이더라

 

실없는 이야기가 너무 길어졌다

여튼 나는 오늘도 공부해도 모자를 시간에 사건경위서를 작성하였다

어서 이 일이 마무리 지어지길 바란다

 

3、勉強を邪魔する要素がある

 

2と重なる内容かもしれない
退社して3ヶ月が過ぎたが、まだ前の職場が俺を苦しめている
退社後、業務連絡を受けなかったという理由で会社側は退職金支給を拒否し、
これを受け取るまでに2か月かかった
この過程で労務士事務室を出入りしながら相談を受け、追加的に
報酬なしで労働を提供した対価について請求ができると話を聞き、
現在これに対して請求進行中であり、むしろ会社側は俺を告発すると言っている状況だ

怪しまれることは全くなく、
むしろ退社日を遅らせながら引継ぎまで加えてしてあげて、資料まで作っておいた
会社側が主張する「退社後連絡を取らなかったことで不利益を受けた」という立証は難しいだろう
多くの人が「電話に出てくれれば道義を破ったのではないか」と言うかもしれない
そしたら今度は俺から聞いてみよう
対価なしに一日にも昼夜を問わず数十件の仕事電話を全て対応してあげられるか?

以後、問題発生する要素が多い外部の人が保安資料を閲覧してまで代わりに仕事をしてあげられるか?

 

俺は何年も会社の誰よりも一生懸命働いたと自信を持って言える
最低時給にもならないOT手当てを受け取りながら夜12時まで働いても嫌なこと言わず
すごく大変だったのでOT手当てをきちんと支払いしてくださいと言ったらOT手当て制度自体をなくしても
それでも私は一生懸命働いた
むしろそれが毒になったのか、病気になって病院に通ってみたら心が折れるのは一瞬だった

つまらない話が長くなった
とにかく俺は今日も勉強しても足りない時間に事件の経緯書を作成した
早くこの件がまとまることを願う


4. 아직까지도 프로그래밍을 보험으로써 생각하고 있다

 

사실 이 이야기도 3과 이어지는 부분이기도 한다

나는 왜 프로그래밍, 그것도 백엔드를 배우겠다고 다짐했는가?

당연히 돈이다

 

그러나 돈을 벌 수단은 이 시대를 살아가는 사람이라면 그 누구라도 가능한 일이 수없이 많다

하필이면 지금 그 수단들에 대하여 흥미를 느끼고 있다

애드센스 광고, Short 플랫폼 수익, NFT, 스마트스토어 등

하루에도 수없이 쏟아지는 수익화 수단들에 눈을 빼앗기고 있다

 

개발자로써 취업하고 싶다기 보단

큰 돈을 벌고싶으며 실패했을 경우를 대비하여 부트캠프에 들어온것이다

너무 쉽게 생각하고 있었던거지

통상 4년간 익힐 과정을 단 6개월만에 습득을 해야하며

모든힘을 쏟아부어도 어려울 과정을 나는 보험으로 생각하고 있었다니

제대로 수업받고있는 다른사람들에게 실례가 될 마음가짐으로 임하고 있었다

 

이미 수업에 따라가지 못하는 문제가 발생하였으므로

좀 더 커리큘럼에 집중하여 반년 후 개발자로써 취업 가능한 수준까지는

끌어올려야 하지 않을까 라고 마음을 고쳐먹었다

적어도 같이 수강하고 있는 다른사람에게 피해는 주지 말아야지

 

나는 항상 끝맺음이 어중간하다

이 글도 그렇고 모든일들이 그랬었다

부디 이 여정의 끝맺음은 확실하게 할 수 있도록 노력하자

 

4、今でもプログラミングを保険として考えている

 

この話も3と繋がる部分でもある
俺はなぜプログラミング、それもBack-end を学ぶと誓ったのか?
当たり前に金だ

しかし、お金を稼ぐ手段はこの時代を生きている人なら誰でもできることが数え切れないほど多い
よりによって今それらの手段に興味がますますできている
アドセンス広告、Shortプラットフォーム収益、NFT、スマートストアなど
1日に数え切れないほどの収益化手段に目を奪われている

開発者として就職したいというより
大きい金を稼ぎたくて、でも失敗した場合に備えてBootCampに入ったのだ
簡単に考えていたんだ

通常4年間学ぶ過程をたった6ヶ月で習得しなければならないのに
全力を注いでも難しい過程を俺は保険だと思っていたなんて
きちんと授業を受けている人たちに失礼な気持ちで臨んでいた

 

すでに授業についていけない問題が発生したので
もっとカリキュラムに集中して半年後に開発者として就職できるレベルまでは
引き上げるべきではないかと気を取り直した
少なくとも一緒に勉強している他の人に迷惑をかけないように

俺はいつも仕上げが中途半端だ
この文もそうだし、すべてのことがそうだった
どうかこの旅の締めくくりだけはしっかりできるように努力しよう。


 

'Remembrance' 카테고리의 다른 글

2023-06-18 회고 (3)  (0) 2023.06.18
2023-05-24 回顧  (0) 2023.05.24
2023-04-24 [코드스테이츠] 회고  (0) 2023.04.24

+ Recent posts