본문 바로가기

알고리즘(algorithm)/프로그래머스

(12)
프로그래머스) 덧칠하기 python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, m, section): answer = 0 if section: # 패인트 칠할 부분이 존재한다면 s = section[0] e = s + m - 1 answer += 1 # 패인트 칠을 시작하는 부분을 가장 먼저 오는 칠 할 부분으로 설정하고 마지막 부분을 # 시작 부분에서 한 번에 칠해지는 길이까지로 정해주고 1번 칠했음을 표시해줍니다. for i in section: if e < i: s = i e = s + m - 1 answer += 1 # 칠 할 부분이 이전에 칠 했던 ..
프로그래머스) 미로 탈출 python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(maps): answer = 0 open = False # 레버를 내려 나갈 수 있는지 여부를 False로 만들어줍니다. visited = [[0] *len(maps[0]) for _ in range(len(maps))] # 주어진 지도와 같은 크기의 방문표시할 이중리스트를 만들어줍니다. for i in range(len(maps)): for j in range(len(maps[0])): if maps[i][j] == 'S': sta..
프로그래머스) 숫자 변환하기 python from collections import deque def solution(x, y, n): answer = 0 dp = [0 for _ in range(1000001)] # 범위 안을 확인하기위해 주어진 범위 크기의 리스트를 만들어줍니다. dp[x] = 1 # x의 위치를 1로 만들어줍니다. q = deque() q.append((x, 1)) # q에 x와 비용을 튜플로 묶어 넣어줍니다. while q: num, cnt = q.popleft() # q에서 가장 앞의 값을 확인해서 num과 cnt로 이름 붙여줍니다. if num == y: break # q에서 뺀 num이 y라면 원하는 값에 도착하였으므로 확인을 멈추어줍니다. if num + n
프로그래머스) 게임 맵 최단거리 python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(maps): n = len(maps) m = len(maps[0]) visited = [[0] * m for _ in range(n)] # 표시된 영역의 크기와 같은 방문처리를 할 리스트를 만들어줍니다. visited[0][0] = 1 # 시작점을 1로 바꾸어줍니다. bfs(0, 0, maps, visited) # bfs를 통해 목적지를 도달할 수 있는지 확인해줍니다. if visited[-1][-1]: return visited[-..
프로그래머스) 네트워크 python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(n, computers): answer = 0 visited = [0 for _ in range(n)] # 방문 처리를 저장할 visited를 만들어줍니다. for i in range(n): if visited[i] == 0: visited[i] = 1 chain(i, computers, visited) answer += 1 # 모든 컴퓨터를 순회하며 연결된적 없다면 연결 회로들을 확인하고 answer의 # 값을 1 더해줍니다. return answer # answer에 누적된 값을 출..
프로그래머스) 등굣길 python def solution(m, n, puddles): answer = 0 maps = [[0] * (n + 1) for _ in range(m + 1)] p = [[x, y] for [x, y] in puddles] # 웅덩이의 좌표를 받아줍니다. maps[1][1] = 1 # 시작점에 도달하는 방법 1개로 표시해 줍니다. for i in range(1, m + 1): for j in range(1, n + 1): if i == 1 and j == 1: continue # 시작 좌표가 아니라면 if [i, j] in p: maps[i][j] = 0 # 웅덩이가 있는 위치일 경우 지나갈 수 없고 else: maps[i][j] = (maps[i - 1][j] + maps[i][j - 1])%1000000007..
프로그래머스) 정수 삼각형 python 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(triangle): answer = 0 for i in range(1, len(triangle)): # 첫 번째 줄은 더할 값이 없으므로 2번째 줄부터 순회합니다. for j in range(len(triangle[i])): if j == 0: triangle[i][j] += triangle[i - 1][j] # 아래줄의 가장 첫 번째 수의 경우 윗 줄의 첫 번재 값만 접하므로 # 윗 줄의 첫 번째 수를 더해주고 elif j == len(triangle[i]) - 1: triangle[..
프로그래머스) 가장 가까운 같은 글자 python def solution(s): answer = [] d = dict() for i in range(len(s)): if s[i] in d: answer.append(i - d[s[i]]) d[s[i]] = i else: d[s[i]] = i answer.append(-1) # 단어를 순회하며 문자가 나온적 없다면 answer에 -1을 넣어주고 # d의 s[i]에 i를 넣어주고 나온적 있다면 i - d[s[i]]을 answer에 넣어주고 # d의 s[i] 값을 갱신해줍니다. return answer