본문 바로가기

전체 글78

문자열 회전 문자열 회전: 한 단어가 다른 문자열에 포함되어 있는 판별하는 isSubstring이라는 메서드가 있다고 하자. s1과 s2의 두 문자열이 주어졌고, s2가 s1을 회전시킨 결과인지 판별하고자 한다(가령 'waterbottle'은 'erbottlewat'을 회전시켜 얻을 수 있는 문자열이다). isSubstring 메서드를 한 번만 호출해서 판별할 수 있는 코드를 작성하라. 그냥 문자열 length 만큼 한칸씩 돌려가면서 일치하는 경우가 있는지 확인하면 되는거 아닌가 생각이 들었다. def is_substring(a, b): char_array = list(b) for i in range(len(char_array)): char = char_array.pop(0) char_array.append(char.. 2023. 8. 22.
행렬 90도 회전 #### 행렬 회전: 이미지를 표현하는 N x N 행렬이 있다. 이미지의 각 픽셀은 4바이트로 표현된다. 이때, 이미지를 90도 회전시키는 메서드를 작성하라. 행렬을 추가로 사용하지 않고서도 할 수 있겠는가? - N x N 행렬 - 90도 회전 - 행렬 추가 사용 금지 위 조건들을 기반으로 생각을 해보자. 일단 행렬 추가 사용 금지 라고 했기 때문에 swap 하는 방식으로 처리가 되야 할 것이다. 문제를 간략화해서 다음과 같이 생각해보자. 아래와 같은 행렬이 있다고 하자. ``` [ [1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16] ] ``` 이 행렬을 90도 회전하면 다음과 같을 것이다. ``` [ [13, 9, 5, 1], [14, 10, .. 2023. 8. 21.
macbook pro m1 에서 리눅스 커널 빌드해보기 최근에 스터디를 시작하게 되었다. 스터디에서 진행하는 것 중 하나는 운영체제 (aka 공룡책) 스터디이다. 이번 범위는 1~2장 이였는데 발표자료는 여기에 올려두었다. 2장 뒷 부분에는 리눅스 커널 빌드에 대해 설명하는 부분이 나온다. 발표용 슬라이드를 만들던 나는 이게 진짜 될까? 라는 생각이 들었었다. 그래서 시도해보았다. 그런 짓은 하지 말아야 했는데 Linux 커널 빌드해보기 책에서 소개한 순서는 다음과 같았다. http://www.kernel.org 에서 linux 소스 코드를 다운로드 한다. “make menuconfig” 명령을 사용하여 커널을 구성한다. 이 단계는 .config 구성 파일을 생성한다. “make” 명령을 사용하여 메인 커널을 컴파일한다. make 명령은 .config파일에서.. 2023. 8. 21.
운영체제 1~2장 정리 슬라이드 K-DEVCON Daejeon 오프라인 스터디에서 사용한 슬라이드 자료입니다. 범위 및 핵심 내용 0. 개론 1. 서론 (1.4 까지만 다룸) 인터럽트 2. 운영체제 구조 시스템 콜 프로그램 실행 과정 운영체제 구조 운영체제 빌드 및 부트 과정 운영체제를 왜 공부해야 하는가 컴퓨터 과학에 종사하는 사람은 많지만 운영체제를 만들거나 수정하는 데는 소수만이 참여한다. 그렇다면 왜 우리는 운영체제와 그 작동방식에 대해서 공부하는가? 단순하게 거의 모든 코드가 운영체제 위에서 실행되므로 운영체제 작동방식에 대한 지식은 적절하고 효율적이며 효과적이며 안전한 프로그래밍에 중요하기 때문이다. 운영체제의 기본 지식, 컴퓨터 하드웨어 구동 방식 및 응용 프로그램에 제공하는 내용을 이해하는 것은 운영체제를 작성하는 사람들.. 2023. 8. 20.
문자열 매칭 수 계산 하나 빼기: 문자열을 편집하는 방법에는 세 가지 종류가 있다. 문자 삽입, 문제 삭제, 문자 교체. 문자열 두 개가 주어졌을 때, 문자열을 같게 만들기 위한 편집횟수가 1회 이내인지 확인하는 함수를 작성하라 예시 pale, ple → true pales, pale → true pale, bale → true pale, bake → false 문자열 매칭 수 >= 긴 문자열의 length - 1 이면 true를 반환하게 처리 import difflib def get_matching_character_count(str1, str2): matcher = difflib.SequenceMatcher(None, str1, str2) matching_blocks = matcher.get_matching_blocks(.. 2023. 8. 19.
문자열에 들어 있는 모든 공백을 '%20'으로 바꿔 주는 메소드를 작성하라. URL화: 문자열에 들어 있는 모든 공백을 '%20'으로 바꿔 주는 메소드를 작성하라. 최종적으로 모든 문자를 다 담을 수 있을 만큼 충분한 공간이 이미 확보되어 있으며 문자열의 최종 길이가 함께 주어진다고 가정해도 된다 (자바로 구현한다면 배열 안에서 작업할 수 있도록 문자 배열(character array)을 이용하길 바란다). URL 인코딩에 대해 궁금하다면 https://en.wikipedia.org/wiki/URL_encoding 을 참고하자. 한국어 위키에는 퍼센트 인코딩 이라고 되어있다. 이 문제를 해결하는 가장 쉬운 방법은 replace를 하는것 이겠지만, 그 것을 묻는 것은 아닐 것이다. 이 문제는 문자로 구성된 배열(character array)을 이용해 문제를 풀기를 원했고 최종적으로.. 2023. 8. 18.