pandas | merge(), join(), concat() 함수 사용하기
·
TIL/python
pandas에서 데이터를 결합할 때 사용하는 merge(), join(), concat() 함수 사용 방법에 대해 정리해보려 한다. 다음과 같은 left, right 데이터를 사용한다. merge() 함수를 사용하면 기본적으로 공통된 컬럼을 기준으로 inner join(내부 조인)을 수행한다. inner join(내부 조인): 양쪽 테이블에서 공통된 키값에 대해서만 데이터 결합 따라서 left, right의 공통된 컬럼 key를 기준으로 결합하며, b, c, e에 대해서 내부 조인을 수행한다. left.merge(right) 내부 조인이 아닌 전체 조인(outer join)을 하고 싶으면 merge() 함수의 매개변수 how에 'outer'를 전달해 주면 된다. outer join(전체 조인): 공통되지..
백준 1541 | 그리디 | 잃어버린 괄호 [파이썬 python]
·
Algorithm/백준
1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 처음 시도한 코드 math = input().split('-') # '-' 기준 분리 hap = [] for i in math: if i.isdigit(): # 숫자이면 정수로 바꿔 hap에 저장 hap.append(int(i)) else: # 문자열이면 eval 메소드로 식 계산 hap.append(eval(i)) result = hap[0] for i in hap[1:]: # hap의 1번 이후 값들을 순차적으로 result에서 빼줌 result -= ..
프로그래머스 | 체육복 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(n, lost, reserve): # 정렬 lost.sort() reserve.sort() # lost, reserve에 공통으로 있는 요소 제거 for i in reserve[:]: if i in lost: reserve.remove(i) lost.remove(i) # 체육복 빌려주기(나의 앞 번호부터 확인) for i in reserve: if i-1 in lost: lost.remove(i-1) elif i+1 in lost: lost.remove(i+1) return n-l..
프로그래머스 | 문자열 나누기 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(s): answer = 0 # 분해한 문자열의 개수 isx, isnotx = 0, 0 # x와 같은 글자 수, 다른 글자 수 for i in range(len(s)): if isx == isnotx: # 두 횟수가 같으면 분리(answer+1) answer += 1 x = s[i] isx, isnotx = 0, 0 if s[i] == x: isx += 1 else: isnotx += 1 return answer 문자열 s의 첫 글자를 x라 할 때, 차례대로 문자를 읽어가며 x와 같..
프로그래머스 | 공원 산책 [파이썬 python]
·
Algorithm/프로그래머스
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(park, routes): # 시작점('S') 찾기 x, y = 0, 0 for row in range(len(park)): for col in range(len(park[row])): if park[row][col] == 'S': # 시작 지점 'S' x, y = row, col # 이동 방향 정의 op = {'N':(-1, 0), 'S':(1, 0), 'W':(0, -1), 'E':(0, 1)} # 이동 for i in routes: dx, dy = op[i.split()[0]..
백준 11724 | DFS / BFS | 연결 요소의 개수 [파이썬 python]
·
Algorithm/백준
11724번: 연결 요소의 개수 첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주 www.acmicpc.net 문제에서 연결 요소의 개수를 구하라고 했지만, 연결 요소의 뜻을 몰라서 헤매고 있었다. 하지만 주어진 예제 입력을 직접 손으로 그려보니 연결 요소가 무엇인지 알 수 있었다! 1번 예제 같은 경우는 직접 그래프를 그려보면 다음과 같은 모양으로 그려진다. 125 / 34 형태로, 2개의 그래프이자 2개의 영역으로 나눠진 것으로 볼 수 있다. 2번 예제 같은 경우는 직접 그래프를 그려보면 다음과 같은 모양으..