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

기록해야 기억한다

프로그래밍 162

[python] codility: MaxCounters

app.codility.com/programmers/lessons/4-counting_elements/ 4. Counting Elements lesson - Learn to Code - Codility Calculate the values of counters after applying all alternating operations: increase counter by 1; set value of all counters to current maximum. app.codility.com Lesson 4 Counting Elements 의 2번째 문제다. 주제는 카운팅인 것 같다. 코딜리티의 특징은, 테스트 케이스는 적게 내주고 실제 채점 케이스에서 좌절감을 느끼게 해주는 것 같다. 그래서 더 큰 도움이 ..

[python] 백준 1932번: 정수 삼각형

www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 분류 DP(다이나믹 프로그래밍) C+ 코드 링크 choichumji.tistory.com/42 [C++][알고리즘] 프로그래머스:: 정수 삼각형 https://programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업 choichumji.tistory.com 삼각형의 위 꼭짓점으로부터 아래의 왼쪽과 오른쪽으로 ..

[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. 모든 점수가 같으면 이름의 오름 차순..

[python] 백준 18428번: 감시 피하기

내가 생각한 분류 DFS 아이디어 1. 장애물을 놓을 수 있는 공간을 리스트로 저장해놓는다. 2. combination 을 활용해, 장애물을 놓을 수 있는 위치의 조합별로 확인한다. 3. (2) 에서 정한 장애물의 위치대로 전체 지도에 장애물을 배치한다. 4. check 함수를 통해 각 경우별로 "선생님"에게 잡히는 "학생"이 없는지를 확인한다. 5. 선생님의 위치마다 동서남북 4방향으로 "T"를 채워넣는다. (장애물이 없는경우) 6. 다 채웠으면 (DFS가 끝나면) 각 학생의 위치의 board 가 "T"인지 "S" 인지를 확인해 "S"가 아닌 경우 1명이라도 선생님에게 잡힌 경우니 이 장애물 배치는 False 다. 7. 모든 장애물 배치에 대해 "모든 학생이 감시를 피하는 경우" 가 없다면 "NO"를 ..

[python] 백준 14888번: 연산자 끼워넣기

분류 DFS/BFS 백트래킹 브루트포스 완전 탐색 등등... 풀이자에 따라 갈리는 듯 나의 아이디어 한줄정리 모든 경우의 수를 DFS를 통해 완전 탐색함. 모든 수를 탐색한 경우의 결과 값을 최대 최소 값과 비교한다. 코드 각 연산자의 사용 가능 갯수와 연산자 기호를 매핑한 뒤 인덱스에 따른 연산을 getDeli(i, val, next) 를 통해 진행한다. C++ 14 방식을 따르는 음수 // 양수 연산에 대해서는 따로 처리해보았다. // 로 단순하게 놓으면 테스트 3번에서 막히는 듯 하다. 사용한 count를 1- 해주고 DFS 연산을 한뒤 다시 돌아올 땐 다시 1+ 해주어야 한다. 가능한 값의 범위가 -10억 ~ 10억 이므로 초기 값은 최소값 1e9+1, 최대값 -1e9-1로 설정했다.

[python] 백준 18405번: 경쟁적 전염

분류 그래프 이론, BFS(너비우선탐색) 링크 https://www.acmicpc.net/problem/18405 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치�� www.acmicpc.net 전형적인 2차원 배열에서의 확장 문제. 번호가 서로다른 바이러스들이 번호순, 시간순으로 영역을 넓힌다. 상->하->좌->우 순으로 번진다고 한다. 근데 확산방향의 순서는 큰 의미는 없는듯. 서로다른 바이러스간 간섭이 방향에 의해 달라지진 않기 때문에. 중요 포인트 시간 S가 "끝났을 때" X,Y 위치의 바이러스 값을 ..