만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍/기억노트 20

[python] 코딩 테스트 약점 정리

첫 취준생으로써 몇번 코테를 보지도 않았지만 (코딜리티 2회, 라인,카카오,쿠팡,프로그래머스 코딩챌린지 끝) 그 동안의 연습 부족으로 생소했던 포인트들을 정리해 본다. 1. 시간이 나오는 문제 인풋이 [10/03 01:34:55, 10/04 13:35:22] 식의 시간 형태 리스트로 주어지는 경우 어찌할줄을 몰라 시간을 많이 날렸다. (쿠팡,카카오) python 은 이런 경우 datetime 모듈을 활용해 datetime.strftime 과 datetime.strptime 을 활용해 풀 수 있을 거 같은데 너무 생소해서 머리가 잘 안굴러가서 결국엔 못풇었다. 시간의 대소관계 비교라던지 등등을 잘 할 수 있게 연습해놓자 2. 진법 변환 문제 여러 군데에서 1,2번 문제로 나오기 좋은 테마인 것 같다. 10..

[python] union 연산으로 노드 집합 관계 구하기

from sys import stdin n,m = map(int, stdin.readline().split()) parent = [0]*(n+1) def find_parent(a): if a != parent[a]: parent[a] = find_parent(parent[a]) return parent[a] def union_parent(a,b): pa = find_parent(a) pb = find_parent(b) if pa > pb: parent[a] = b else: parent[b] = a for i in range(1,n+1): parent[i] = i for i in range(n): li = list(map(int,stdin.readline().split())) for j in range(..

[python] 이진 탐색 알고리즘

배열이 주어진다. 배열의 원소는 오름차순으로 주어진다. 만약 배열에서 "값이 인덱스와 동일한 원소"인 고정점을 찾는다면 그 값을, 고정점이 없으면 "-1" 을 출력해보자. 주의) 이것을 O(logN) 의 시간 복잡도로 해결해야만 한다. O(logN) 이라는 것은 전체 배열의 순차적 탐색이 아니라 이진 탐색을 해야함을 의미 한다. from sys import stdin N = int(input()) li = list(map(int,stdin.readline().split())) start = 0 end = N-1 while start mid: # 더 작음 e..

[python] list 여러 조건으로 정렬하기 (sort by multiple field,attribute)

www.acmicpc.net/problem/10825 10825번: 국영수 첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1 www.acmicpc.net 이 문제를 풀며 확실히 기억해야 할 부분이라 싶어 정리한다. list 의 각 item이 field가 1개 이상인 tuple 이라고 하면 다양한 조건으로 정렬하고 싶을 때가 있을 것이다. (사람이름, 국어점수, 영어 점수, 수학 점수) 가 한 item 이라면 위 문제처럼 1. 국어 점수 내림차순 2. 영어 점수는 오름차순 3. 수학 점수는 내림 차순 4. 모든 점수가 같으면 이름의 오름 차순..

[intelliJ] 인텔리제이 다중 커서 (multi-cursor)

VS Code 에서 리액트 편집할 때 쓰던 다중 커서 alt+shift 방향키 (맞나 갑자기 헷갈리네) 는 인텔리제이에선 줄 옮기기로 작동한다. 그럼 어떻게 인텔리제이에서 다중커서를 쓸 수 있을까? package com.hanium.hfrecruit.dto; import com.hanium.hfrecruit.domain.spec.PersonalSpec; import com.hanium.hfrecruit.domain.spec.Spec; import com.hanium.hfrecruit.domain.user.User; public class PersonalSpecDto { private Long personalSpecId; private String certifiedDate; private String au..

[python] 진행 방향 시계,반시계 방향 꺾기 돌리기

백준 3190번 뱀 문제에서는 스네이크 게임을 진행하기 위해 뱀의 머리의 방향을 바꾸는 경우가 있다. 기본 값은 오른방향이다. (3시방향) 2차원 배열로 오른쪽 진행 방향은 [0,1] 이 되겠고, 이상태로 시계와 반시계 방향으로 머리의 진행방향은 바뀔 수 있다. move = [[0,1],[1,0],[0,-1],[-1,0]] direction = 0 if commands == 'L': # command 가 L 이면 반시계방향 회전 direction = (direction - 1) % 4 elif commands == 'D': # command 가 D 이면 시계방향 회전 direction = (direction + 1) % 4 index 0 -> 4 방향으로 증가할 경우 이 move의 방향은 반시계방향으로 ..

[python] 2차원 리스트 90도 돌리기

def rotated(array_2d): list_of_tuples = zip(*array_2d[::-1]) return [list(elem) for elem in list_of_tuples] # return map(list, list_of_tuples) 테스트 arr = [[1,2,3],[4,5,6],[7,8,9]] nm_arr = [[1,2],[3,4],[5,6]] print(rotated(arr)) print(rotated(nm_arr)) 위의 예시를 실행시키면 결과는 아래와 같다. 꼭 N^N 배열이 아니더라도 가능하다. 안경잡이개발자 "나동빈" 님의 리스트 90도 회전 코드 def rotated(a): n = len(a) m = len(a[0]) result = [[0]* n for _ in ra..