알고리즘
-
[프로그래머스 / Python] 주식가격 | 초코더알고리즘/프로그래머스 2020. 8. 18. 16:42
https://programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제 주식가격이 담긴 배열 prices가 주어지면 가격이 떨어지지 않은 기간이 몇초인지를 알려주는 함수를 짜야함. 문제가 스택/덱 으로 분류되어 있었는데 그냥 이중for문으로 구현함. 접근법 1. i번째 원소와 i번째 이후 원소들을 비교하며 i번째 원소보다 크거나 같으면 cnt를 증가시켜준다. 2. i번째 원소보다 작아지..
-
[프로그래머스 / Python] 올바른 괄호 | 초코더알고리즘/프로그래머스 2020. 8. 18. 15:52
def solution(s): stack=[] #s문자열의 원소들을 검사해봄 for string in s: #stack이 비어있을 때 / 여는괄호가나오면추가, 닫는괄호가나오면 False if len(stack)==0: if string=='(': stack.append(string) else: return False #stack이 비어있지않을때 / 여는괄호가나오면추가, 닫는괄호가 나오면 pop elif string=='(': stack.append(string) elif string==')': stack.pop() #검사가 끝난후 stack이 비어있는면 짝이 잘맞는것 if len(stack)==0: return True return False https://programmers.co.kr/learn/co..
-
[SWEA / Python] 스도쿠 검증 | 초코더알고리즘/SW Expert Academy 2020. 8. 18. 01:49
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Psz16AYEDFAUq&categoryId=AV5Psz16AYEDFAUq&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 스도쿠가 잘 이루어져있는지 검사하는 알고리즘을 짜야합니다. 가로,세로,3x3에서 같은 숫자가 없으면 스도쿠가 잘 되어있는것. 접근법 1. 가로로 검사해주는 함수 2. 세로로 검사해주는 함수 3. 3x3을 검사해주는 함수 를 각각 구현하여서 모두 True가 나오면 1을 프린트 그렇지 않으면 0을 프린트 해준다. 느..
-
[백준 / Python] 16929번 Two Dots | 초코더알고리즘/백준 2020. 2. 12. 22:04
https://www.acmicpc.net/problem/16929 16929번: Two Dots 첫째 줄에 게임판의 크기 N, M이 주어진다. 둘째 줄부터 N개의 줄에 게임판의 상태가 주어진다. 게임판은 모두 점으로 가득차 있고, 게임판의 상태는 점의 색을 의미한다. 점의 색은 알파벳 대문자 한 글자이다. www.acmicpc.net 접근법 DFS로 탐색하면서 사이클이 있는지 확인했습니다. 사이클의 여부는 선분의 길이가 최소선분 길이인 4이상이면서 시작좌표와 끝좌표가 같으면 사이클이 있다고 하였습니다. DFS함수를 살펴보겠습니다. dfs(x,y,cnt,color,sx,sy) x,y는 현재좌표, cnt는 선분의길이, color는 점의색, sx,sy는 첫시작좌표입니다. 1. 범위가 넘어가는지 확인해줌 2...
-
[백준 / Python] 3019번 테트리스 | 초코더알고리즘/백준 2020. 2. 12. 14:32
https://www.acmicpc.net/problem/3019 3019번: 테트리스 문제 테트리스는 C열 필드위에서 플레이하는 유명한 게임이다. 필드의 행의 수는 무한하다. 한 번 움직일 때, 아래와 같은 일곱가지 블록 중 하나를 필드에 떨어뜨릴 수 있다. 블록을 떨어뜨리기 전에, 플레이어는 블록을 90, 180, 270도 회전시키거나 좌우로 움직일 수 있다. 이때, 블록이 필드를 벗어나지 않으면 된다. 블록을 필드의 바닥이나 이미 채워져있는 칸의 위에 놓여지게 된다. 창영이가 하고있는 테트리스는 일반적인 테트리스와 약간 규칙이 다르다. www.acmicpc.net 접근법 1. 각 블록마다 회전하여 필드에 떨어트렸을때, 딱 맞게 떨어지는 필드의 높이를 숫자로 표현해 보겠습니다 1번블록 ㅣ-> 한칸 넓..
-
[백준 / Python] 13913번 숨바꼭질 4 | 초코더알고리즘/백준 2020. 2. 6. 13:41
https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 www.acmicpc.net 접근법 숨바꼭질을 참고해주세요. 앞의 문제와 다른부분은 움직이는 경로를 저장해주어야 한다는 점입니다. path리스트에 이전의 좌표..
-
[백준 / Python] 1697번 숨바꼭질 | 초코더알고리즘/백준 2020. 2. 6. 13:37
https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net 접근법 기존의 bfs방식에서 이동할 수 있는 방법인 (x+1,x-1,x*2)에서 고려해주는것이 포인트입니다. 그리고 옮긴 좌표에 해당하는 ..
-
[백준 / Python] 10973번 이전 순열 | 초코더알고리즘/백준 2020. 2. 6. 13:32
https://www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 나의 풀이 n = int(input()) a = list(map(int, input().split())) def next_permutation(a): n=len(a)-1 i = n while i>0 and a[i-1]