본문 바로가기

오늘의 공부/코딩테스트

(11)
[programmers] 자물쇠와 열쇠 1 사용 알고리즘 및 아이디어 - Greedy search 다짜고짜 살펴보는 문제인듯.. - CNN 할 때도 사용하는 padding 개념이 여기에도 들어갔다. 원본의 가장자리에 가짜 값(나는 2를 넣음)을 추가해 원본의 크기를 늘리는 padding 기법은 모든 섭셋을 매칭할 때 유용하다. - 2차원 배열을 90도 회전하는 방법 - 모듈화 연습. 2. 리뷰 (1) 항상 막혔던 부분: 2d-array의 부분집합을 인덱싱하는 방법을 확실하게 이해할 수 있었던 문제. 내가 맨날 하던 방법 df[i:i+n][j:j+m] 을 하면 n개의 행만 추출되더라.. 완전 헛다리 짚고 있었음.. 인덱싱 할 때, 시작좌표 ( start_x , start_y ) 값을 잡은 후, 부분집합 크기 i, j 만큼 더해주면 원하는 부분만..
[Hacker Rank] Sherlock and Anagrams 기가막히다.. 문자열 반복 문제는 해시테이블을 이용하여 하나씩 카운트하면 편할 것 같다. 1. total int 값을 선언하고, 청크 dic 을 만든다. 여기에 청크의 개수를 메모할 것이다. 2. for 문을 두 개 돌린다. 하나는 청크의 길이, 하나는 시작 인덱스임. 2.1. for 문을 이용해 만든 청크를 정렬하여 반복을 없앤다. 2.2. 청크 dic에 정렬한 청크를 입력하고 카운트를 한다. 2.2.1 청크를 구성한문자가 같다면 똑같은 문자열으로 만들 수 있다. 2.2.2. 청크 하나일 때는 만들 수 있는 청크가 0이므로 dic 디폴트 값은 0으로 설정한다. 2.2.3. 청크가 n(n>1)개일 때, 만들 수 있는 청크는 n-1개 이다. 2.3. 따라서 청크의 디폴트 값은 0으로 설정한 후 이를 tot..
[HackerRank] New Year Chaos 두 가지 방법을 생각했다. 1. array를 보고 뇌물 먹인 횟수 계산하기 2. 직접 elements 위치를 바꿔가며 몇 번 뇌물을 먹였는지 세기 첫번째 방법을 하다가 포기했다. 고려할 상황이 너무 많았음 더보기 1. index 와 index에 현재 위치한 값을 비교한다. 2. index == 현재값 은 넘어간다 3. index 현재값 : 뇌물을 받은 사람이다. 4.1. 4. 인 사람 중에서도 뇌물을 준 사람이 있다. q[i] > q[i+1] 인 경우 두번째 방법은 직접 원소를 옮겨가며 횟수를 카운트했다. 인터넷의 도움을 받았다. 더보기 1. index 와 메모 dic 을 준비한..
운영체제 알고리즘 SJF 와 디스크 컨트롤러 https://programmers.co.kr/learn/courses/30/lessons/42627 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 운영체제 스케쥴링 알고리즘 CJSF 알고리즘 First Come First Start " 온 순서대로 업무를 처리한다. " 단점: waiting time 이 길다. SJF 알고리즘 Shortest Job First "소요 시간이 짧은 업무부터 처리한다. " 장점: waiting time 이 단축된다. 단점: 미래에 올 업무의 소요 시간을 예측할 수 없어 실제로 사용할 순 없다. Priority Scheduli..
네트워크 Graph, BFS 알고리즘 ###======================================= # stack을 이용하여 BFS 사용하기 # 왜 bfs? 주위를 살펴보며 네트워크가 갖춰져 있는지 확인해야 함. # 그래프를 먼저 만들고 , 그래프에 대하여 bfs 알고리즘 ###===================================== def dfs(graph, start_node): visit = [] stack = [] stack.append(start_node) while stack: node = stack.pop() if node not in visit: visit.append(node) stack.extend(graph[node]) return visit def solution(n,computers): #1...
[프로그래머스] 조이스틱 https://gurumee92.tistory.com/182 프로그래머스 문제 풀이 조이스틱 문제 URL 조이스틱 Contents 문제 지문 파악하기 구르미의 알고리즘 풀이 문제 지문 파악하기 이번에도 문제의 입력을 통해서, 문제를 파악해보도록 하겠습니다. 다음은, 문제의 입력입니다. 입력: name = "JAZ".. gurumee92.tistory.com 1. 사용 알고리즘: 탐욕 알고리즘 : 각 상황에 대해 최적해를 찾아야 한다! 최적해를 찾아야 할 상황들) -상황 1 : 문자를 바꿀 때 위로 ? 아래로? -상황 2 : 방향은 오른쪽으로 가야 할까? 왼쪽으로 가야할까? 상황을 나누고 각 상황에서 나온 솔루션들을 비교하여 최적해를 고르면 된다!! 다시 풀어보기 고려할 사항: while 문을 사용할 때 ..
[프로그래머스] level 1 - 체육복 https://rain-bow.tistory.com/entry/Python-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%B2%B4%EC%9C%A1%EB%B3%B5 [Python] 프로그래머스 - 체육복 - 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학.. rain-bow.tistory.com 필요 알고리즘: Greedy Algorithm 각 상황에서 최적해를 찾는 알고리즘. 1. 데이터 전처리 2. 각 상황에서 행동의 우선순위 고려해야 함. 내가 생각한 풀이법: _can = [1 for i..
[python] 진수 표현법 파이썬은 기본적으로 10진수로 출력된다. # 10진수 -> n진수 표기 a = 10 #10진수 -> 8진수 문자열0o b = oct(a) >> 0o12 #10진수 -> 16진수 문자열 c = hex(a) >> 0xa #10진수 -> 2진수 문자열 d = bin(a) >>0b1010 #n진수 -> 10진수 표기 #8진수 문자열 -> 10진수 정수형 _b = int(0o12, 8) #16진수 문자열 -> 10진수 정수형 _c = int(0xa, 16) #2진수 문자열 -> 10진수 정수형 _d = int(0b1010, 2) #print, format() 함수를 이용하여 진수표기 #10진수 print('{}'.format(10)) #8진수 print('%o' % 10) >> 12 print('#o {:#o}'..