Computer Science
[Python] enumerate 반복문에서 index skip하기
enumerate(iterable, start=0) iterator를 지원하는 객체를 받으면 index와 value를 포함한 tuple을 반환합니다. next(iterator[ ,default ]) iterator를 지원하는 객체의 다음 item을 반환합니다. Python에서 반복문에 List 또는 string 변수를 사용할 때 index와 value를 모두 사용하기 위해 enumerate를 사용합니다. 하지만 조건에 따라 반복문 중에 바로 다음 index 또는 특정 index들을 넘겨야 하는 경우가 필요합니다. 이런 상황에서 필요한 방법을 소개하겠습니다. enumerate 사용 List 또는 string 변수를 반복문을 이용하면서 값을 사용할 때가 있습니다. 하지만 일반적인 for문을 사용하면 inde..
[OS] Process #1 - Program, Process, Thread의 개념 및 차이점
Program 실행 가능한 파일 Process 실행중인 Program Thread Process 내에서 실제로 작업을 수행하는 주체 Computer Science 지식에 대해 공부를 하면서 블로그에서는 처음으로 OS 주제를 다루겠습니다. OS에 대한 CS는 상당히 많지만 그 중 가장 기본적인 Process에 대해 공부하도록 하겠습니다. 우리들은 컴퓨터를 사용하거나 프로그래밍을 공부햐면서 Program, Process, Thread라는 용어를 상당히 많이 접하게 됩니다. 하지만 제대로 공부하지 않는다면 각각에 대한 개념과 차이점을 모른채 무분별하게 사용하게 됩니다. 가장 먼저 각 정의와 개념에 대해 알아보도록 하겠습니다. Program이란? Program을 쉽게 말하자면 "실행 가능한 파일"입니다. 즉 개..
[Java] Java Class 및 Object #2 - 생성자와 변수 초기화
Class 어떠한 물체를 코드로 구현해 추상화시킨 개념. Object 추상화시킨 개념인 Class가 구체적인 실체로 만들어진 것. 지난번 글에서는 Java 클래스와 객체에 대해 설명했고 이어서 변수의 종류와 생성 시기를 이야기했습니다. 이번 글에서는 클래스 생성자와 변수들의 초기화 과정에 대해 이야기해보겠습니다. 생성자 선언하기 생성자란 인스턴스가 생성될 때 호출되는 "초기화 메소드" 입니다. 인스턴스가 new를 통해 생성될 때 자동으로 가장 먼저 호출되는 클래스의 메소드이기 때문에 보통 초기화 과정을 작성합니다. 그렇다면 직접 코드에서 어떻게 작동을 하는지 알아보겠습니다. 이전 글에서 사용했던 Animal 클래스와 main 메소드를 참고하겠습니다. Animal 클래스의 기타 메소드들은 생략했다는 점 알..
[Java] Java Class 및 Object #1 - 변수 종류와 생성 시기
Class 어떠한 물체를 코드로 구현해 추상화시킨 개념. Object 추상화시킨 개념인 Class가 구체적인 실체로 만들어진 것. 제 블로그에서 Java에 대한 글이 포스팅 될 예정입니다. Java는 대학생 시절에 공부한 이후로 따로 공부하지 않았기에 역량이 부족하다고 생각했습니다. Java 공화국이라고도 불리는 대한민국에서 Java의 비중은 무시할 수 없습니다. 미래에 Java가 계속 높은 비중을 차지할지 아니면 다른 언어가 높은 비중을 차지할지 모르겠지만, Java에 대한 기초적인 역량은 필수라고 생각하기에 다시 공부하기로 결심했습니다. Java 공부의 베이스로 "Java의 정석"이라는 유명한 책과 pdf를 참고했다는 점 알아주시기 바랍니다. 클래스와 객체 가장 첫 포스팅 주제는 클래스입니다. 앞에 ..
[C++] Split #2 - multiple delimiter split 함수 구현
split string이 주어져 있을 때 내가 원하는 글자를 기준으로 잘라 배열에 저장시키는 기능. strtok( 문자열의 시작 주소, 찾기 시작할 위치 ) String 함수로써 string 글자에서 원하는 글자를 찾아 시작 위치를 반환받을 수 있습니다. ( Overloading 되어있기 때문에 parameter가 더 있음 ) 관련 글 [C++] Split #1 - String delimiter split 함수 구현 이번에는 지난번 글에 이어서 C++에서의 split 기능을 두번째로 구현해보겠습니다. 이번 글에서 구현할 split은 이전 글에서도 언급했지만 다수의 delimiter를 기준으로 String을 나눠주는 기능입니다. 이러한 기능의 split은 얼핏 기억을 떠올려보면 사칙연산의 식이 input으..
[C++] Split #1 - String delimiter split 함수 구현
split string이 주어져 있을 때 내가 원하는 글자를 기준으로 잘라 배열에 저장시키는 기능. find( 찾을 글자, 찾기 시작할 위치 ) String 함수로써 string 글자에서 원하는 글자를 찾아 시작 위치를 반환받을 수 있습니다. ( Overloading 되어있기 때문에 parameter가 더 있음 ) 관련 글 [C++] Split #2 - multiple delimiter split 함수 구현 이번에는 C++에서 split 기능을 구현해보겠습니다. C++로 string 알고리즘 문제를 푼 사람들은 알 겁니다. 다른 언어에 비해 C++가 string 관련 함수가 아주 빈약하다는 것을... 저도 마찬가지로 string 알고리즘 문제를 풀 때마다 "C++ split" 이라는 키워드로 구글링을 했..
[C++] 2차원 배열 행렬 바꾸기
2차원 배열 행렬 바꾸기 2차원으로 선언된 배열을 2중 for문을 이용하여 행렬을 바꿀 수 있습니다. memmove( 배열 A 시작 주소, 배열 B 시작 주소, 크기 ) 배열간의 값 복사를 할 수 있는 함수로 B의 배열 값들을 A로 복사하는 기능을 제공합니다. 관련 글 [C++] 2차원 배열 90도 회전 지난번에 올렸던 2차원 배열 90도 회전에 이어서 이번에는 2차원 배열 행렬 바꾸기를 소개하겠습니다. 사실 행렬 바꾸기는 90도 회전에 비해서 상당히 간단합니다. 하지만 유용한 함수를 사용하지 않으면 2중 for문이 반복적으로 사용되기 때문에 지저분한 코딩이 될 수 있습니다. 그래서 90도 회전과 마찬가지로 memmove() 함수를 사용하면서 코드를 비교적 깔끔하게 작성할 수 있습니다. 행렬 바꾸기의 좌..
[C++] 2차원 배열 90도 회전
2차원 배열 90도 회전 2차원으로 선언된 배열을 2중 for문을 이용하여 90도 회전 시킬 수 있습니다. memmove( 배열 A 시작 주소, 배열 B 시작 주소, 크기 ) 배열간의 값 복사를 할 수 있는 함수로 B의 배열 값들을 A로 복사하는 기능을 제공합니다. 관련 글 [C++] 2차원 배열 행렬 바꾸기 알고리즘 문제를 풀다보면 2차원 배열을 계속해서 회전시켜야할 때가 있습니다. 90도, 180도, 270도 회전을 시킬 때 각각을 구현하여 문제를 해결할 수 있겠지만, 90도 회전하는 법을 알면 함수로 선언 후 반복적으로 이용하면 됩니다. 이렇게 하는 것이 코드도 깔끔해지고 시간도 절약할 수 있습니다. 2차원 배열을 90도 회전시키는 방법은 2중 for문을 이용해 행렬을 서로 바꿔주면 쉽게 해결할 수..