전체 글

Dynamic Programming 왜 만듬? Brute Force, DFS, BFS을 이용해서 많은 경우의 수를 전부 따져보는데 시간이 너무 많이 걸리는 경우 즉, 다 따져보기에는 경우의 수가 너무 많아 속도가 느려지는 경우 수행시간을 단축하고자 만들어졌다. 다르게 보자면 큰 문제를 작거나 간단한 여러개의 문제로 나눠서 푸는 방법 작은 부분을 해결한 후 , 그 해들을 이용해서 큰 문제들을 해결, 최종적으로 원래 주어진 입력의 문제를해결하는 알고리즘 설계 기법 분할정복과 차이점 동적 분할 부분 문제가 중복되어 상위 문제 해결시 재활용됨 memoization 기법 사용 분할정복 부분 문제 중복 안됨 memoization 사용 안함 메모이제이션의 개념 Overlapping Subproblems( 중복 부분 ..
·SW 정글 일지
일단 정리해 놓은 부분만 올리자... Stack(스택) LIFO(후입선출)인건 알겠는데 그 특성이 어디에 좋은 건가? 잠시 하던 일을 멈추고, 다른 볼일을 보고 돌아올 때 좋다. 예를 들어 게임을 일시 정지하고 심부름을 가야한다고 생각해보자 게임을 하고 있는 초기 스택은 [ 게임 ] 이런 상태다. 심부름 명령이 들어오면 stack의 상태는 [ 게임 , 심부름 ] 가 된다. 심부름을 완료했다면 stack은 pop되어 다시 [ 게임 ]가 된다. 재귀함수 호출을 관리할 때의 경우도 위와 같은 방식으로 생각하면 편하다. 데이터의 역순 처리가 필요한 경우 백준 문제풀이에서 짝을 맞추는 상황에서 굉장히 유용하다. 어떤 알고리즘에서 주로 사용되나? DFS 재귀 또는 스택을 사용해 구현한다. 재귀함수가 스택이라 생각하..
·SW 정글 일지
너무 빡세기도, 아쉽기도, 재밌기도 했던 0주차가 끝나고 또다시 과제가 나왔다. 좀 신선한 이번 과제는 에세이 작성이다. 주제는 지나온 과거와 앞으로 정글 생활에 대한 자신에 생각이며 이제 써보도록 하자 지금까지의 나 제대로 나를 찾는 과정을 시작한 건 그리 오래되지 않았다. 내가 하고 싶은 것, 좋아하는 것을 찾기 시작한 건 아마 재작년 정도부터였다. 그전까지 떠내려가는 나뭇잎처럼 자신의 주관 없이 수동적으로 살아왔다. 머릿속에는 물음표보다는 마침표가 압도적으로 많았다. 다른 사람의 생각, 의견들을 들으면 "왜 그렇게 생각하지?" 보다는 "음 그렇구나." 하면서 여과 없이 받아들이고 따라가는 식이었다. 물론 행복한 순간도, 재밌는 순간도 있었으며, 좋은 사람들이 없었다는 것도 아니다. 다만 나 자신을 ..
·CS
c언어의 컴파일 과정에 대해 Run 버튼만 누르면 알아서 해줘서 딱히 생각이 없다가 강의를 들으면서, "원리도 모르고 쓰고 있었네?" 라는 생각이 씨게 와서 글로 남기게 됐다. 과정 0. 시작 파일 : hello.c 1. 전처리 : hello.i 수행은 전처리기가 한다. gcc(gnu compiler collection)을 이용해서 확인 가능하다. 명령어 : gcc -E hello.c -o hello.i 보통 컴파일이 책을 통으로 번역하는 작업이라 한다. 그런 관점에서 전처리는 책을 번역하기 전에 책에서 인용한 참조 문서들을 가져오는 작업이라고 할 수 있겠다. 가져오기만 하고 번역은 하기 전이다. 즉, 전처리의 결과는 아직 소스코드인 상태다. 수행 작업 파일을 읽고 외부에 선언된 다양한 소스코드,라이브러..
·CS
먼저 파일이란? 컴퓨터가 저장하고 있는 데이터라고 할 수 있다. 소켓도 파일이라고 볼 수 있다. 그리고 프로토콜이란? 정보처리기사 내용 구문, 의미, 타이밍으로 구성 데이터를 안전하게 주고 받기 위한 약속 구문 : 패킷의 데이터 구조를 어떤 구조로 만들지 약속하는 것, 프로토콜마다 다른 구조를 가지고 있다. (소켓을 이해하는데 이 부분만 있으면 될 것 같다.) 그럼 패킷은 또 뭔가 바로 소켓이라는 파일에 적히는 데이터의 형태, 즉 소켓에 담기는 데이터가 되겠다. 소켓의 형태는 위에서 설명한 프로토콜의 종류에 따라 정해진다. 마침내 소켓이란? 패킷을 담는 파일이자, 통신에 사용되는 파일, 통신에 필요한 데이터를 담는 파일 되시겠다. 서로 다른 두 컴퓨터가 있다고 가정해보자 그들은 각자 고유의 ip를 가지고..
·CS
구분선 전까지는 본 내용에 들어가기에 앞서 알고 있으면 이해하는데 도움이 될 만한 내용을 먼저 설명이다. 알고 있으면 복습겸 한번 슥 읽고 넘어가자. ASCII란? American Standard Code for Information Interchange의 약자 알파벳, 숫자, 특수 문자에 고유의 숫자를 부여한 코드표로 7Bit 조합이라 128개의 문자를 표현한다. 1byte( = 8Bit ) 에서 첫 비트는 부호로 쓰고 나머지 7Bit으로 ASCII Table에 있는 모든 알파벳, 숫자, 특수 문자를 표현할 수 있다. UTF란? Universal Coded Character Set + Transformation Format의 약자 ASCII로는 세상에 존재하는 여러 언어를 표현할 수 없어서 만든 문자표..
·Flutter
과정 figma페이지에서 share를 클릭, link copy function12 웹 사이트 가입 function12 마이페이지로 가서 프로젝트 생성 type , export ---> flutter로 선택 --> zip파일 다운로드 zip파일 풀기 vscode에서 열기 pub get google-font 버전 수정 --> google_fonts: ^4.0.4 main에서 Scene위젯을 빌드하고 있는데, 딱히 지정을 figma에서 페이지 지정을 상세히 하지 않았다면, 서로 다른 모든 페이지가 Scene라는 이름을 공유해서 커스텀 위젯을 구현함 import하는 페이지를 계속 바꿔줘가며 확인하면서 디자인 가져와서 확인해야 한다. (아래 코드 예시) import 'package:flutter/material...
·Java
StringTokenizer st = new StringTokenizer(br.readLine()); 원리 생성자에 입력되는 매개변수(String 자료형)를 구분자(= delimeiter, 디폴트값 : 공백 )로 나눠서 저장 공백을 기준으로 토큰을 나눠서 저장 배열처럼 특정 인덱스의 토큰은 못 찾는다. 대표 메서드 nextToken() : 공백으로 토큰을 나누고, 다음 토큰을 문자열을 반환 countTokens() : 토큰 개수, 단 구분자가 아닌 공백을 기준 토큰의 수만 센다 hasMoreTokens() : 토큰이 있는지, 없는지 확인 nextToken("구분자-delimiter") : 토큰을 구분자를 기준으로 나누고, 다음 토큰을 문자열로 반환 (◎주의 : 구분자는 String 자료형이기 때문에 [ ..
forrest13
forrest