본문 바로가기

CS

(93)
[프로그래머스] 조이스틱 https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조이스틱은 가로 또는 세로로 움직일 수 있다. 이때 가로 방향이나 세로 방향이나 회전하는 것처럼 움직인다. 세로: 알파벳을 A-Z 사이에서 움직일 수 있다. 가로: 각 자리를 이동할 수 있다. 알파벳 이름의 각 자리는 맨 처음에 A로 시작한다고 가정하며, 주어진 이름을 완성하는데 걸리는 최소 조작 회수를 구한다. 세로 방향 세로 방향의 알파벳 이동은 나타내는게 별로 어렵지 않았다. 세로에서 수행할..
[프로그래머스] 숫자짝꿍 https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각 숫자 문자열을 받아 만들 수 있는 가장 큰 숫자를 문자열로 반환하는 문제다. 처음에는 각 문자열을 나누어 정렬한 후 서로 같은 문자를 비교하는 방식으로 문제를 해결했다. function solution(X, Y) { const xsp = X.split('').map(it => Number(it)).sort((a,b) => b-a); const ysp = Y.split('').map(it =>..
[프로그래머스] 이진수 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/120885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 많은 언어들이 N진수 문자열 10진수 숫자 변환 기능을 지원하므로 문제를 푸는 것 자체는 어렵지 않다. 예를 들어 자바스크립트에서 지원하는 기능을 이용하면 다음과 같이 풀 수 있다. function solution(bin1, bin2) { return (parseInt(bin1,2) + parseInt(bin2,2)).toString(2); } 다만 위 코드는 딱히 로직이랄게 없으므로, 이진수를..
[프로그래머스] 당구 연습 https://school.programmers.co.kr/learn/courses/30/lessons/169198 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 원쿠션으로 주어진 공을 맞출 때, 공이 이동하는 최소값을 찾는 문제이다. 문제 설명 중 입사각 및 반사각이 동일하다는 정보가 있는데, 이 정보를 가지고 각도를 어떻게 구해보겠다고 하면 문제가 산으로 가기 쉽다. 우선 문제를 생각하기 전에, 입사각과 반사각에 대해 다시 떠올려보자. https://terms.naver.com/entry.naver?docId=2039087&cid=47308&categ..
[프로그래머스] 베스트 앨범 https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해시 테이블을 사용하는 문제다. 자바스크립트에는 이에 대응되는 Map이 있으므로, 이를 이용하여 문제를 풀었다. function solution(genres, plays) { const map = new Map(); genres.forEach((gen, idx) => { const target = map.get(gen); if (!target) { // 해당 장르에 대한 초기 세팅. map.set..
[python] 파이썬 re 모듈 동작 방식 문제 상황 https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 조건에서 접두사가 매칭되는 경우를 찾으면 false을 반환하라고 한다. 맨 처음 작성한 코드에서는 "접두사"라는 표현에 집중하여 re 모듈을 이용하여 정규표현식 비교 코드를 작성했다. import re def solution(phone_book): phone_book.sort() for i in range(0, len(phone_book) - 1): if re.search(f'^{..
최대 공약수, 최소 공배수 https://mathbang.net/206#gsc.tab=0 최대공약수와 최소공배수의 관계 최대공약수와 최소공배수를 구하는 방법을 이해했나요? 대부분의 경우에 최대공약수와 최소공배수는 소인수분해를 이용하는 방법으로 구해요. 이 방법은 초등학교 때 많이 해봤던 방법이니까 mathbang.net 최대 공약수(Greatest Common Divisior, GCD): 두 수 이상의 여러 수의 공통된 약수 최소 공배수(Least Common Multiple, LCM): 둘 이상 수들의 공통된 배수 중 가장 작은 수 두 수 A, B가 존재할 때 LCM(A,B) = A * B / GCD(A,B)의 관계가 성립한다. GCD(A,B)는 A 및 B를 구성하고 있는 값이므로 A와 B 각각을 GCD(A,B) * n의 꼴로 ..
[컴퓨터구조] Parallel Processing(3) 현재 글은 Parallel Processing(2)에서 이어지며, 컴퓨터 구조와 아키텍처 서적 및 대학에서 들은 강의를 기반으로 한다. SMP와 클러스터의 비교 SMP와 클러스터 방식 모두 병렬 컴퓨팅을 목적으로 하고 있으며, 다른 분야에서 두 방식 모두 상용화되어 있다. SMP 공유 메모리를 사용하기 때문에 관리하기 쉽다. 일반적인 컴퓨터 모델과 유사하게 동작하므로 기존에 사용하던 프로그래밍 방식을 사용할 수 있으며, 기존 프로그램들을 조금씩 수정하면 병렬 동작이 호환된다. 물리적 공간, 전력 소모가 적다. ( 일반적으로 작은 규모로 사용하기 때문에 당연하다. ) 과거부터 많이 연구되어 왔기 때문에 여러 이론들이 잘 정립되어 있으며 안정적이다. Cluster 확장성이 매우 좋다. 가용성이 높다. 고장이..