Programming/프로그래머스
프로그래머스 - [Level 2] 전력망을 둘로 나누기 (파이썬)
프로그래머스 - [Level 2] 전력망을 둘로 나누기 (파이썬)
2025.04.02https://school.programmers.co.kr/learn/courses/30/lessons/86971?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이BFS + 완전탐색 방식의 풀이로 작성하였다. 각 연결을 하나씩 끊어보면서 두 전력망의 노드 수 차이의 최소값을 구하는 방식이다.문제에서 요구하는 사항은하나의 연결을 끊어 전력망을 두개로 나누었을때,두 전력망 송전탑 개수 찾이의 최소값을 반환하는 문제이다.BFS 코드는 너무 단순하기 때문에 간단하게 설명하면, 하나의 연결 그래프에서 시작 노드 S로부터 BFS를 수행하여 연결된 노드의 개수를 세는 함수로 칭한다.전..
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
2025.04.02https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이두 배열이 주어졌을 떄, 한 배열의 모든 수를 나누면서 다른 배열의 어떤 수로도 나누어지지 않는 수중에서 최대값을 찾는 문제이다.내가 접근한 방식은 다음과 같다.두배열 arrayA, arrayB가 주어지고,x는 arrayA의 모든 원소를 나눌수 있어야한다.x는 arrayB의 어떤 원소도 나눌 수 없어야한다.또는 반대로 x는 arrayB의 모든 원소를 나눌 수 있어야한다.x는 arrayA의 어떤 원소도 나눌 수 없어야한다.from math i..
프로그래머스 - 배달 (파이썬)
프로그래머스 - 배달 (파이썬)
2025.03.30https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이N개의 마을(1번부터 N번), roads는 [마을 A, 마을 B, 걸리는 시간] 형태의 리스트고, 음식 배달은 1번 마을에서 시작한다.K시간 이하로 배달 가능한 마을 수를 구해야한다.1번 마을을 시작점으로 해서 모든 마을까지의 최단 거리를 구한다. 여기서는 다익스트라 알고리즘을 사용한다.구한 거리 중에서 K이하인 마을 개수를 세면 정답이다.시간 복잡도 분석도로수 E, 마을 수 N즉, O((N + E) Log N)코드import heapqfr..
프로그래머스 - 마법의 엘리베이터 (파이썬)
프로그래머스 - 마법의 엘리베이터 (파이썬)
2025.03.29분류 : 그리디링크 : https://school.programmers.co.kr/learn/courses/30/lessons/148653풀이엘리베이터가 버튼을 눌러 층을 이동하는데,위층으로 1칸, 아래층으로 1칸 이동이 가능하고, +10, +100 등도 가능하다.목표층에서 0층으로 이동하는 최소 버튼 횟수를 구하는 문제이다.즉, 각 자릿수를 기준으로 반올림 또는 내림하여 효율적인 방법으로 움직이는 그리디 알고리즘 문제이다.while storey > 0 : digit = storey % 10 next_digit = (storey // 10) % 10현재 숫자를 1의 자리부터 확인하면서, 다음 자릿수가 4 이상인지 여부에 따라 반올림 할지 내릴지 결정한다.if digit > 5 or (digit..
프로그래머스 - 택배 상자 꺼내기 (파이썬)
프로그래머스 - 택배 상자 꺼내기 (파이썬)
2025.03.26https://school.programmers.co.kr/learn/courses/30/lessons/389478?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이다른 사람 풀이를 보고 한숨을 쉬었던 문제이다..def solution(n, w, num): m1 = num%(w*2) m2 = ((w*2+1) - m1)%(w*2) # num 이상 n 이하의 수들 중 2*w로 나눈 나머지가 m1,m2인 것들의 수를 세면 된다. return len(range(num,n+1,w*2)) + len(range(num + (m2-m1)%(w*2), n+1, w*2..
[프로그래머스] 달리기 경주
[프로그래머스] 달리기 경주
2025.03.24https://school.programmers.co.kr/learn/courses/30/lessons/178871 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr오랜만에 프로그래머스 풀이를 진행하였다..풀이이문제는 단순하게 덤볐다가 시간초과가 나는 문제이다..Python 내장 함수 index는 시간 복잡도가 O(N)이기 때문에 조심해서 사용해다 한다는 점을 다시한번 생각하게 되는 문제이다.처음에 시간 초과가 난 코드는 단순하게 index의 위치를 탐색해 SWAP 하는 코드를 짰지만 68점 밖에 얻을 수 없었다.조금더 시간을 효율적으로 사용하기 위해서, dictionary를 통해 구현을 진행하였다.기존과..
[프로그래머스/JAVA] 프로그래머스 문제 모음
[프로그래머스/JAVA] 프로그래머스 문제 모음
2021.11.02언제든지 비공개 될수 있음을 명시합니다. 만약 문제 저작권에 위배된다면 바로 사라질수 있음을 미리 알려드립니다. 문제 찾기는 해당 문제 Ctrl + F 를 통해서 검색,, 홀수의 개수 함수의 인자값으로 양의 정수 n이 주어진다. 이때, 1부터 n 이하의 수들 중 홀수의 개수를 리턴하는 함수를 구현하시오. class Solution { public int solution(int n) { int answer = 0; for(int i = 1; i num2를 만족하고, 항상 큰수에서 작은수를 뺍니다. class Solution { public int solution(int num1, int num2) { int answer = 0; answer = (num1 + num2) + (num1 - num2) + (n..
[프로그래머스] 행렬의 합
[프로그래머스] 행렬의 합
2020.10.12def solution(arr1, arr2): result = [] temp = [] for i in range(len(arr1)): for j in range(len(arr1[i])): temp.append(arr1[i][j] + arr2[i][j]) result.append(temp) temp = [] return result for문에서 사실 애먹었다;; for i in range(len(arr1)): #arr1의 요소 2개 (2번 돈다.) for j in range(len(arr1[i)) # arr1의 요소 안의 요소 temp.append(arr1[i][j] + arr2[i][j] result.append(temp) temp = []#요소를 묶기 위해
[프로그래머스] 두 개 뽑아서 더하기
[프로그래머스] 두 개 뽑아서 더하기
2020.10.12def solution(numbers): numbers = sorted(numbers) result = [] for i in range(len(numbers)): for j in range(i + 1, len(numbers)): result.append(numbers[i] + numbers[j]) print(result) result = set(result) print(result) result = list(result) return (result) 처음 시도는 result를 list로 놓고, 5번을 도는 동안, i+1에서는 i값과 j값을 동시에 추가한다. 하지만 이 방법은 실패로 돌아갔고, set을 미리 지정해 주어야한다. def solution(numbers): numbers = sorted(numb..
[프로그래머스] 이상한 문자 만들기
[프로그래머스] 이상한 문자 만들기
2020.10.12def solution(s): s = s.split() temp = [] for i in s: idx = 0 for j in i: if idx % 2 == 0: temp.append(j.upper()) print(idx, j.upper()) else : temp.append(j.lower()) idx += 1 temp.append(" ") temp.pop() print(temp) print("".join(temp)) idx를 사용해서, idx의 위치에 맞는 문자를 대소문자로 변경해준다.
[프로그래머스] 정수 제곱근 판별
[프로그래머스] 정수 제곱근 판별
2020.10.11def solution(n): import math num = math.sqrt(n) if math.sqrt(n) == int(math.sqrt(n)) : #정수값이 나온다 => 제곱근의 존재 return pow(num+1, 2) #num+1 * num+1 return -1
[프로그래머스] 자연수 뒤집어 배열로 만들기
[프로그래머스] 자연수 뒤집어 배열로 만들기
2020.10.11def solution(n): return list(map(int, reversed(str(n)))) map에 대해서 자세히 공부하자
[프로그래머스] 정수 내림파순으로 배치하기
[프로그래머스] 정수 내림파순으로 배치하기
2020.10.11def solution(n): print(n) a = list(str(n)) # a라는 변수를 지정해, n의 값들을 list형태로 저장 print(a) # ['1', '1', '8', '3', '7', '2'] intList = list(map(int, a)) #intList라는 리스트를 지정해, str형태의 원소를 int형태로 지정 print(intList) #[1, 1, 8, 3, 7, 2] intList.sort(reverse=True) print(intList) #[8, 7, 3, 2, 1, 1] a = ''.join(map(str,intList)) #join을 사용하기 위해서는 다시 str형태로 지정해야한다. return int(a)
[프로그래머스] 시저 암호
[프로그래머스] 시저 암호
2020.10.11def solution(s, n): answer = [] for i in s: if i.isalpha(): if( 65 122: result = ord(i) + n - 26 answer.append(chr(result)) else : result = ord(i) + n answer.append(chr(result)) else: answer.append(' ') print(answer) return ''.join(answer)
[프로그래머스] 소수 찾기
[프로그래머스] 소수 찾기
2020.10.10def solution(n): count = 0 for i in range(1, n+1): temp_cnt = 0 for j in range(1,i+1): if i % j ==0: temp_cnt +=1 if temp_cnt == 2: count += 1 return count