본문 바로가기

개발기술

(119)
프로그래밍 언어 특징비교분석 Typing SystemPython is dynamically typed, meaning you don’t need to declare the type of variable explicitly; the interpreter infers the type at runtime.Java is statically typed, where you must explicitly declare the type of every variable, making it more strict in terms of type checks before code execution.PerformanceJava is generally faster than Python as Java bytecode is compiled to native mac..
인텔리제 개발환경설정 자바소스코드 실행순서 : 자바 소스 코드를 개발자가 작성한다. 자바가 제공하는 javac 라는 프로그램(컴파일러)을 사용소스 코드를 컴파일 하여 java class`파일이 생성된다. 이 과정에서 자바 소스 코드를 바이트코드로 변환하며 자바 가상 머신에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류도 검출한다.  완성된 class 파일을 자바 가상 머신(JVM)인 `java` 라는 프로그램으로 실행되면서 프로그램이 작동한다. 인텔리제이 역할 : 인텔리제이는 자바 코드를 실행 할 때 이 과정을 자동으로 처리해준다. 인텔리제이에서 자바 코드를 실행하면 컴파일과 실행을 모두 한번에 모든 클래스를 대상으로 한꺼번에 처리한다. (단, 인텔리제에서 class 파일을 접속해보이면 소스코드처럼 보이나 실은 바이트코드..
리눅스 리눅스소스 비공개 문화에 반발하여 시작한 GNU 프로젝트의 차원에서 공개된 오픈소스(GPL) 운영체제. 누구나 GPL 소스에 접근하고 활용할 수 있으며, 많은 개발자가 참여하기때문에 수정이 빈번하고 호환성문제가 발생할 수 있음. (스스로 해결법 탐색할 수 있는 역량이 필요) 리눅스 기본패키지 구성매번 ls와 pwd를 통해서 리눅스 파일 구조를 찾아내기보다는 기본적인 구조는 외워서 작업하는게 더 편리할 것으로 생각되어 기본 패키지는 외울 필요가 있다고 생각한다.  Essential Directories to RememberPathPurposeCommon Usage/Root directory (everything starts here)cd / to go to the top level/home/username..
코딩테스트 일반유형 문제풀이 코딩테스트 학습법1. 수학공부하듯이 공식을 이해와 암기를 병행해야한다.2. 유형을 암기해야한다코딩테스트 풀이법0. 문제를 완전히 이해한 후에 풀이를 시작할 것1. 주어진 예시를 귀납적으로 접근해서 일반화할 것2. 풀이의 시간복잡도를 따져볼것3. 손코드딩이 완료된 후에 실제로 코드를 작성에 들어갈 것 코딩테스트 제출전1. 제출전 로그를 남겨서 코드의 흐름을 확인할 것2. 주어진 케이스 외에도 엣지 케이스를 3개정도 만들어서 생각해볼것 문제접근방식 1. 연역적 탐구방식 : 수학적 논리관계를 통해서 답을 도출해낼 수 있을때2. case by case 분석 : 어떤 solution으로 도달할 수 있는 방법들을 MECE하게 나열하고, 하나씩 고려해서 불가능하면 소거하는 방식3. 시행착오법(trial and err..
CS공부 - 컴퓨터구조 1. 컴퓨터 시스템- 컴퓨터 시스템은 하드웨어와 소프트웨어로 구성되어 있다. 하드웨어는 CPU, 주기억장치(RAM,ROM), 보조기억장치, 네트워크로 구성되어있다.- 폰노이만구조 : 메모리에 프로그램(코드)와 데이터를 저장하고 CPU에서 이를 순차적으로 연산해 나가는 구조. 물리적 회로의 변경없이 메모리 내의 소프트웨어만 교체하면 새로운 연산을 가능하도록 함. 2. 컴퓨터 3대 구성요소 CPU(Centeral Process Unit) : 명령어를 해석하고 실행하는 부품으로 계산을 위한 산술논리연산장치(ALU), 부품들을 제어하고 명령어를 해석하는 제어장치(Control Unit), 임시저장장치 레지스터로 구성되어있다.메모리 : 코드와 데이터를 저장하는 장치IO Devices : 컴퓨터 내외부 간 정보를 ..
Data Structure 데이터구조 학습과 선택의 접근관점1. 데이터 구조 선택에 있어서 고려할 것들. 데이터 간의 순서관계가 유의미한가?  Hash table과 Dynamic Array데이터 간의 대소관계가 유의미한가? Sorting으로 자원 절약이 가능한지메모리 inplace로 구현해야하는가? Dynamic Programming 혹은 Stack과 Queue 구조를 사용하면 좋을지데이터의 조회가 주목적인가, 데이터의 보관이 주목적인가? Hashtable/Dynamic Array 혹은 Stack/Queue데이터 의미 단위가 전체 데이터의 맥락과 별개로, 개별 데이터에 있는가 혹은 전체 데이터 맥락을 고려해야하는가? Hashtable/Dynamic Array 혹은 Stack/Queue2. 사용시의 장점과 단점3. 실제 활용되는 분..
CS를 위한 이산수학 정리 이산수학 실수처럼 연속성이 있는 것들이 아니라 주로 정수, 논리 연산같이 서로의 값들이 연속적이지 않고 뚝뚝 떨어져 있거나 구분되어 '셀 수 있는' 것들을 주로 연구하는 학문.  이산수학에 포함된 개념과 기호들은 컴퓨터과학에서 알고리즘, 프로그래밍 언어 이론, 암호학, 계산이론 등의 문제를 연구하는 데 유용함.  이산수학이 컴퓨터과학의 언어인만큼 습득하고 정리할 필요가 있음  집합론 그룹의 정의: 일련의 원소와 이들 원소 간의 연산이 특정 규칙을 만족할 때 형성되는 수학적 개념.  그룹은 집합과 연산이 다음 조건을 만족할 때 형성됨.닫힘(Closure): 모든 연산의 결과가 집합에 속함.결합법칙(Associativity):  (a⋅b)⋅c=a⋅(b⋅c)가 모든 a,b,c에 대해 성립.항등원(Identit..