본문 바로가기

알고리즘

(158)
프로그래머스) 달리기 경주 https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(players, callings): answer = [] dic = {} for i in range(len(players)): dic[players[i]] = i for i in range(len(callings)): idx = dic[callings[i]] temp = dic[callings[i]] dic[callings[i]] = dic[players[idx - 1]]..
프로그래머스) 공원 산책 https://school.programmers.co.kr/learn/courses/30/lessons/172928 def solution(park, routes): answer = [0,0] for i in range(len(park)): idx = park[i].find('S') if idx != -1: answer[0] = i answer[1] = idx break for i in range(len(routes)): direction, count = routes[i].split(' ') Wall = False count = int(count) position = answer[:] Wall = False for j in range(count): if direction == 'N': if (0
프로그래머스)바탕화면 정리 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(wallpaper): answer = [] top = 99 left = 99 bottom = -1 right = -1 for i in range(len(wallpaper)): for j in range(len(wallpaper[i])): if wallpaper[i][j] == '#': if top > i: top = i if left > j: left = j if bott..
프로그래머스) 카드뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(cards1, cards2, goal): answer = '' isTrue = True for i in range(len(goal)): string = goal[i] c1 = '' c2 = '' if cards1: c1 = cards1[0] if cards2: c2 = cards2[0] if c1 == string: cards1.pop(0) elif c2 == string..
프로그래머스)덧칠하기 https://school.programmers.co.kr/learn/courses/30/lessons/161989 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, m, section): answer = 1 number = section[0] + m - 1 for i in range(1,len(section)): if section[i]
백준)양 https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net from collections import deque col,row = map(int,input().split()) arr = [] for i in range(col): a = str(input()) a = list(a) arr.append(a) visit = [[False]*row for _ in range(col)] dx = [1,-1,0,0] dy = [0,0,1,-1] w,s ..
백준)1로 만들기 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net a = int(input()) dp = [0] * (a + 1) for i in range(2,a+1): dp[i] = dp[i-1] + 1 if i % 2 ==0: dp[i] = min(dp[i], dp[i // 2] + 1) if i % 3 == 0: dp[i] = min(dp[i], dp[i // 3] + 1) print(dp[a]) DP문제이다. 처음엔 dp인 것을 알았으나 도무지 풀 방법이 떠오르지 않아 그리디로 풀어보려했다. 그러나 여느 dp문제가 그렇듯이 이 문제 또한 그리디로 풀 수가 없다. 한 ..
백준)정수 삼각형 https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net a = int(input()) arr = [] for i in range(a): arr.append(list(map(int,input().split()))) for i in range(1,len(arr)): for j in range(len(arr[i])): left = 0 right = 0 if j - 1 >= 0: left = arr[i-1][j-1] + arr[i][j] if len(arr[i -1]) > j: right = arr[i-1][j] + arr[i][..