n진법으로 표기된 string을 10진법 숫자로 변환하기 - int 함수 진법 변환 문제는 알고리즘 문제나 숙제로 자주 나오는 유형이지요. 이번 시간에는 n 진법으로 표기된 문자열을 10진법 숫자로 변환하는 방법을 배워봅시다. 예시) 5진법으로 적힌 문자열 '3212'를 10진법으로 바꾸기 다른 언어에서는..(또는 이 기능을 모르시는 분은) 보통 사람들은 for 문을 이용해 숫자를 곱해가며 문제를 풉니다. num = '3212' base = 5 answer = 0 for idx, number in enumerate(num[::-1]): answer += int(number) * (base ** idx) 파이썬의 int(x, base=10) 함수는 진법 변환을 지원합니다. 이 기본적인 함수를 잘 쓰면 코드..
알고리즘 문제를 풀다 보면, 정수를 나눈 몫과 나머지를 구해야 할 때가 있습니다. 예시) 7을 3으로 나눈 몫과 나머지를 구해야 하는 경우 다른 언어에서는..(또는 이 기능을 모르시는 분은) 보통 사람들은 나머지와 몫을 따로 구합니다 a = 7 b = 5 print(a//b, a%b) 파이썬에서는 파이썬의 divmod와 unpacking(*)을 이용하면 다음과 같이 코드를 짤 수 있습니다. a = 7 b = 5 print(*divmod(a, b)) divemode(a,b) => a를 b로 나눈 목과 나머지를 tuple로 return ⨳ divmod를 사용할 때 주의할 점 무조건 divmod를 사용하는 게 좋은 방법은 아닙니다.가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 ..
신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력..
로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0,..
컨텍스트 스위칭(문맥교환) CPU에 실행할 프로세스를 교체하는 기술 PCB에 CPU의 PC, SP 정보를 저장, 운영체제 구현에 따라 PCB정보를 메인메모리에 저장 실행할 프로세스의 PCB정보를 CPU의 PC, SP에 저장한다. 실행 중지할 프로세스 정보를 해당 프로세스의 PCB에 업데이트 해서, 메인 메모리에 저장. 다음 실행할 프로세스 정보를 메인 메모리에 있는 해당 PCB 정보를 PCB에 넣고, 실행 디스패치(dispatch) : ready상태의 프로세스를 running상태로 바꾸는 것. 굉장히 짧은 시간 ms단위로, 프로세스 스위칭이 일어난다. 어떻게하면 조금이라도 컨텍스트 스위칭 시간을 짧게 할 수 있을까? C언어가 아닌, 어셈블리어로 컨텍스트 스위칭 코드를 작성. 스위칭 속도가 빠른대신 코드의..
프로세스와 컨텍스트 스위칭 PC(Program Counter)와 SP(Stack Pointer) 각각에 해당 주소값이 저장되며, 현재 실행중인 프로세서를 잠시 중단하고, 다른 프로세서를 실행 시키는 것을 컨텍스트 스위칭이라고 부른다. 이 컨텍스트 스위칭을 위해서 현재 실행중인 프로세서의 상태 및 정보가 PCB에 저장된다. 컨테스트 스위칭에 문제가 있으면, 운영체제가 느려지게 되며, SP와 CP는 'C언어'가 아닌, '어셈블리어'로 이루어져 있다. PCB(Process Control Block) Process Context Block 이라고도 함. 프로세스가 실행중인 상태를 캡쳐/구조화해서 저장한다. 운영체제에서 PCB를 관리한다. Process ID Register 값(PD,..
명이나물 라이브러리