본문 바로가기

전체 글

(85)
다트 게임 (Level 1) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 "1S2D*3T"을 [1, 'S', 2, 'D', '*', 3, 'T']와 같이 바꾸는 작업을 하였다. 숫자가 0부터 10까지 있으므로, "10"을 위해 temp에 문자를 더해주는 방식으로 코드를 짰다. 만든 리스트의 이름을 lst로 명명하였다. stack을 사용하여 연산을 하였다. def solution(dartResult): lst = [] temp = "" for dart in..
비밀지도 (Level 1) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 최대한 파이토닉하게 짜려고 노력하였다. 비트 마스킹을 이용하고 싶어서 한 번 사용해보았다. 먼저 비트 마스크에서 '|'를 사용하여 벽인 곳을 추출하였다. 그리고 숫자를 이진수 문자열로 바꾸어주는 bin 함수를 사용하고, 빈 곳을 '0'으로 채워주는 zfill 함수, 그리고 '1'과 '0'을 정답 포맷에 맞게 바꾸어주는 replace 함수를 사용하였다. 파이썬 함수로 덕지덕지 바르는 ..
캐시 (Level 2) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 코드를 좀 더 줄여서 예쁘게 만들 수 있었다. 그러나 문제를 문자 그대로 구현하면 아래의 코드와 같이 되기 때문에, 다시 바꾸지 않았다. def solution(cacheSize, cities): answer = 0 queue = [] if cacheSize == 0: return 5 * len(cities) for city in cities: city = city.lower() i..
프렌즈4블록 (Level 2) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 board의 내부의 자료형이 문자열이므로 리스트로 바꾸었다. board 전체를 돌면서 2x2의 블록이 동일한 경우를 찾고, 제거해야 할 블록을 담는 리스트인 rm에 담았다. rm 안에는 중복이 있을 수 있으므로 set으로 변환하여 길이를 구하고 answer에 추가하였다. 만약, set으로 변환된 rm의 길이가 0이면 더 이상 제거할 블록이 없다는 뜻이므로 하던 동작을 중단하면 된다...
후보키 (Level 2) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42890 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 combinations를 사용하여 가능한 인덱스 조합을 모두 구한다. 먼저 유일성을 만족하는 키의 집합을 구한다. 문제로 예를 들어 보겠다. "학번"이 키인 경우 유일성을 만족하기 때문에, 집합 {"100", "200", "300", "400", "500", "600"}의 길이는 relation의 row의 개수와 동일하다. 그러나 "이름"이 키인 경우 유일성을 만족하지 않기 때문에, "..
딥러닝의 발전 딥러닝이 발전하게 된 이유 딥러닝이 발전한 데에는 크게 3가지 이유가 존재한다. 1. [알고리즘] 인공 신경망의 단점인 학습의 불안정성(overfitting, gradient vanishing...)을 해결할 수 있는 알고리즘이 제안되었다. - backpropagation, activation function, weight initialization, batch normalization, residual connection, drop out... 2. [하드웨어] GPU의 발전으로 복잡한 행렬 연산에 소요되는 시간을 크게 단축시켰다. 3. [데이터] 빅데이터를 활용하기 시작하였다.
인공지능, 머신러닝, 그리고 딥러닝의 관계 인공지능 인공지능 또는 A.I. (Artifical Intelligence)는 일반적으로 인간의 학습능력, 추론 능력, 지각 능력이 필요한 작업을 할 수 있도록 컴퓨터 시스템을 구현하려는 컴퓨터과학의 세부분야 중 하나이다. 머신러닝 머신 러닝은 인공지능의 하위 분야로, 경험을 통해 자동으로 개선하는 알고리즘을 연구한다. 데이터로부터 학습할 수 있도록 한다. 머신러닝 알고리즘 종류 먼저 크게 3가지로 나눌 수 있다. 1. 지도학습 (Supervised Learning) 2. 비지도학습 (Unsupervised Learning) 3. 강화학습 (Reinforcement Learning) 그리고 세부적으로 나눠진다. 1. 선형 회귀 (Linear Regression) 2. SVM (Support Vecotr ..
순위 검색 (Level 2) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 지원자 정보를 저장하기 위해 infomap을 만들었다. defaultdict로 선언하여 value에 해당하는 값을 리스트로 초기화하였다. infomap의 key는 info로 만드는데, 하나의 info는 총 16가지 경우의 수로 나눠진다. 16가지의 경우의 수는 중복 조합을 구하는 함수인 product를 통해 구한다. itertools.product((True, False), repeat..