목록알고리즘 (19)
개발계발

문제 설명 제한사항 접근방식 - 안전지역을 표시할 2차원배열 생성 - board의 모든 원소를 검사 - board의 원소가 1이면 만들어놓은 2차원배열의 동,서,남,북, 대각선을 모두 위험지역으로 표시 - 생성한 2차원배열의 안전지역 count해서 반환 풀이 코드 def solution(board): answer = 0 n = len(board) safe_board = [[0] * n for _ in range(n)] directions = [(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)] for i in range(n): for j in range(n): if board[i][j] == 1: safe_board[i][j] = ..

문제 설명 제한사항 접근방식 - denom1, denom2의 최소공배수를 구함 - 배열에 분자 * (최소공배수 / 분모)끼리 더한 값과, 최소 공배수를 담아 반환 풀이 코드 def gcd(a, b): while b != 0: a, b = b, a % b return a def lcm(a, b): return a * b // gcd(a, b) def solution(numer1, denom1, numer2, denom2): lcm_value = lcm(denom1, denom2) adjusted_numer1 = numer1 * (lcm_value // denom1) adjusted_numer2 = numer2 * (lcm_value // denom2) total_numer = adjusted_numer1 ..

문제 설명 제한 사항 접근 방식 - polynomial을 "+"기준으로 split - x와 상수를 분리 - x끼리 더하고 상수끼리 더함 - 형식에 맞게 출력 풀이 코드 def solution(polynomial): answer = "" divide = polynomial.split(" + ") num_x = 0 num = 0 for i in divide: if 'x' in i: # 변수x가 있으면 plus = i.split('x')[0] # x를 기준으로 나눈뒤 첫번째 값을 추출(계수) if plus == '': # 첫번째 값이 비어있는 경우에는 계수가 1임 num_x += 1 else: # 1이 아닌 경우 num_x += int(plus) else: # 변수 x가 없는 경우(상수) num += int(..

문제 설명 제한사항 접근 방식 - numlist의 각 원소에서 n을 뺀 절대값을 포함한 2차원 배열 생성 - 생성한 배열의 절대값과 크기를 기준으로 정렬 풀이 코드 def solution(numlist, n): answer = [] # 절대값을 포함해 정렬할 2차원 배열 sorted_by_n = [] # numlist의 값을 절대값을 포함해 추가 for num in numlist: sorted_by_n.append([num, abs(num-n)]) # 절대값을 기준으로 정렬, 절대값이 같다면 -x[0]을 기준(num의 크기, 내림차순)으로 정렬 sorted_by_n.sort(key = lambda x : (x[1], -x[0])) for num in sorted_by_n: answer.append(num..

문제 설명 https://school.programmers.co.kr/learn/courses/30/lessons/120875 제한사항 처음 접근 방식(틀린 코드) 한 점으로부터 다른 모든 점에 선을 연결하고 모든 기울기를 비교 def solution(dots): answer = 0 inclination = [] for i in range(3): for j in range(i+1, 4): tmp = abs((dots[j][1] - dots[i][1])) / abs((dots[j][0] - dots[i][0])) if tmp in inclination: answer = 1 break inclination.append(tmp) return answer -> 코드 실행 시 2가지 test case는 통과하나,..

스택 연속된 메모리에서 후입선출(LIFO)방식의 자료구조로 데이터를 넣는 작업을 푸시, 꺼내는 작업을 팝이라고 한다. 위에서 연속된 메모리라고 했는데, 스택 자료구조의 가장 기본적인 구현체인 리스트를 이용해 코드를 확인해보자. 아래 코드를 실행해보면, stk = [] stk.append(0) stk.append(1) stk.append(2) stk.append(3) stk.append(4) print(id(stk)) print(id(stk[0])) print(id(stk[1])) print(id(stk[2])) print(id(stk[3])) print(id(stk[4]))아래와 같은 결과가 나오는데, 4309557504 4308494608 4308494640 4308494672 4308494704 43..