일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 프로그래머스
- 킥스타트
- BFS
- 브루트포스
- 알고리즘
- CSS
- AI
- 딥러닝
- 동적 프로그래밍
- linux
- DFS
- 리눅스
- 프로그래밍
- 그래프
- 네트워크
- 운영체제
- 백준
- 동적프로그래밍
- 코딩
- dp
- kick start
- 구글 킥스타트
- nlp
- google coding competition
- OS
- 코딩 테스트
- 순열
- PYTHON
- 파이썬
- 코딩테스트
- Today
- Total
목록PYTHON (123)
오뚝이개발자
파이썬에서 전역변수를 사용하려면 global 키워드를 사용해야 한다. 파이썬은 함수 내에서 사용하는 변수는 자동적으로 지역변수로 간주하기 때문이다. 따라서 global이라는 키워드를 붙여줌으로 해당 변수는 전역변수를 사용하는 것이라는 점을 명시해주어야 한다. x = 5 def solution(): global x x += 1 print(x)# 6 위와 같이 x를 처음에 전역변수로 선언해 5를 할당한 뒤 solution이란 함수에서 global x 키워드를 사용하여 1을 더해주었다. 만약 global x를 지워버리면 어떻게 될까? x = 5 def solution(): x += 1 print(x) 위 코드를 실행시키면 "UnboundLocalError: local variable 'x' referenced..
파이썬 내장함수 중 any()와 all()이 있다. 둘은 아큐먼트로 iterable한 객체를 받는데 이 객체를 돌면서 조건을 검사해 답을 True/False의 답을 반환한다. any() : 하나라도 True인게 있으면 True all() : 모두 True여야 True 반환 쉽게 생각해 any는 or, all은 and 연산이라 보면 된다. >>> any([False, False, False]) False >>> any([False, True, False]) True >>> all([False, True, False]) False >>> all([True, True, True]) True if 조건과 함께 다음과 같이 사용할 수도 있다. cur = 3 temp = [1,3,6,2] if any(cur
문제설명 programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 풀이 순위를 확실히 알기 위해선 해당 사람이 이기고 진 정보의 갯수 합이 n-1개가 되어야 한다. 여기서 중요한 점은 A를 이긴 사람은 A에게 진 사람을 이기고 A에 진 사람은 A에게 이긴 사람에 진다 는 것이다. def solution(n, results): answer = 0 # win[i] : i가 이긴 사람의 집합 # lose[i] : i가 지는 사람의 집합 win, lose = {}, {} for i in range(1, n+1): win[i], lose[i] = ..
문제 programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 풀이 DP를 사용해 푸는 문제이다. 문제에서 이동은 오른쪽과 아래쪽으로만 가능하다고 했으니, 한 지점까지 올 수 있는 가능한 경로는 그 지점의 위와 왼쪽칸으로부터이다. 따라서 각 칸마다 그 칸까지 도달가능한 경로의 수를 저장하면 된다. grid라는 n x m 2차원 리스트를 만들어 (0,0)에 1을 넣고, puddle에는 -1을 넣는다. 그 후, 이중for문으..
문제 programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 � programmers.co.kr 풀이 처음엔 이분탐색을 사용하지 않고 time stamp를 찍어 반복문을 돌 때마다 시간이 1씩 경과하도록 구현하였다. 그런데 역시나 시간초과에 걸렸다. 어려웠던 부분이 어떠한 기준으로 이분탐색을 하고, 어떤 값을 탐색으로 찾아야 하는지를 정하는 것이었다. 결국 다른 블로그를 참고해서 구현하였다. 먼저 이분 탐색으로 찾아야 하는 값은 "return해야 하는 최소 소요 ..
문제 programmers.co.kr/learn/courses/30/lessons/43164# 코딩테스트 연습 - 여행경로 [[ICN, SFO], [ICN, ATL], [SFO, ATL], [ATL, ICN], [ATL,SFO]] [ICN, ATL, ICN, SFO, ATL, SFO] programmers.co.kr 풀이 처음엔 단순한 문제인줄 알고 DFS를 사용하지 않고 풀어보려 했다. 내가 생각한 방식은 이러했다. 출발점이 ICN인 것들 추출해서 도착점 알파벳 순으로 앞서는 것은 선택한다. 1에서 선택한 경로의 도착점이 출발점인 것을 골라 알파벳순으로 비교하고 선택하는 과정을 반복한다. 그런데 문제는 위와 같은 방법으로 풀이했을 때 반례가 존재한다는 것이다. [["ICN","JFK"],["ICN","..
문제 문제가 조금 복잡해서 링크를 첨부하겠다. programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를�� programmers.co.kr 풀이 전공자거나 운영체제의 스케쥴링 부분을 공부한 사람이라면 소요시간이 작은 작업을 우선적으로 처리하는 것이 최적의 경우라는 것을 알 것이다. 우선순위큐를 이용하면 되는데 약간은 복잡한 조건을 고려해주어야 한다. 그러나 단순히 소요시간 기준으로 정렬해 처리하면 다른 조건들을 고려하지 못한다. 생각의 순서는 다음과 같다. ..
문제설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개수 n은 2 이상 20,000 이하입니다. 간선은 양방향이며 총 1개 이상 50,000개 이하의 간선이 있습니다. vertex 배열 각 행 [a, b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미입니다. 입출력 예 입출력 예에 대..