알고리즘 풀이

MOC: Index: 문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 [“may”, “kein”, “kain”]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 [“kali”, “mari”, “don”, “tony”]이고 [“kali”, “mari”, “don”]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다..
MOC: Index: 문제 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 코드 class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int commonDenom = denom1*denom2; int commonNumber = (numer1*denom2) + (numer2 * denom1); int gcd = gcd(commonDenom,commonNumbe..
MOC: Index: 문제 설명 문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요. 코드 import java.util.ArrayList; import java.util.Collections; class Solution{ public int[] solution(String my_string){ ArrayList numbers = new ArrayList(); // 숫자를 찾아 리스트에 추가 for (char ch : my_string.toCharArray()){ if (Character.isDigit(ch)){ numbers.add(Character.getNumericValue(ch)..
MOC: Index: 🏷️ Develop Notes 실패한 코드 import sys n,m = map(int,sys.stdin.readline().split()) paper = [list(map(int,sys.stdin.readline().split())) for i in range(m)] idx = [0,0] result = [[10001 for i in range(n)] for i in range(m) ] for p in enumerate(paper): for a in enumerate(p[1]): if a[1]==2: idx[0],idx[1] = p[0],a[0] break def solution(x,y,value): global result global n global m if x < 0 or x..
MOC: Index: 🏷️ Develop Notes 풀이 최종적으로는 하얀 블록과 파란 블록의 갯수를 찾으면 되는 문제이다 분할 정복법과 재귀가 이번 문제의 핵심이다 알고리즘을 못 떠올려서 for문을 여러 개 만드는 삽질을 했었다 cut(x,y)를 만들어서, 반복적으로 정사각형으로 도형을 쪼개서 문제를 해결 한다 Code import sys N = int(input()) paper = [list(map(int, input().split())) for _ in range(N)] white, blue = 0, 0 def cut(x,y,n): global white,blue check = paper[x][y] for i in range(x,x+n): for j in range(y,y+n): if check !..
문제 설명 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 “aya”, “ye”, “woo”, “ma” 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ babbling의 길이 ≤ 100 1 ≤ babbling[i]의 길이 ≤ 15 babbling의 각 문자열에서 “aya”, “ye”, “woo”, "ma"는 각각 최대 한 번씩만 등장합니다. 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 “aya”, “ye”, “woo”, "ma"가 한 번씩만 등장합니다. 문자열은 알파벳 소문자로..
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 풀이 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(n, m): return [gcd(n, m), lcm(n, m)] 유클리드 호제법을 사용하는 간단한 문제입니다 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
문제 설명 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 풀이 프로그래머스 AI가 보기엔, 내게 적정한 난이도는 여기인가보다 이 자식 def solution(s): s = list(s) s.sort(reverse=True) answer= "".join(s) return answer 부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>
문제 설명 "명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전당에 오르게 되고 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 됩니다. 이 프로그램에서는 매일 "명예의 전당"의 최하위 점수를 발표합니다. 예를 들어, k = 3이고, 7일 동안 진행된 가수..
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 `n`이 매개변수로 주어질 때 `n`이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요. 통과한 코드 하지만, 비효율적이다 def solution(n): answer = 0 dic ={} for i in range(2,n+1): for j in range(2,i): if i%j==0: dic[i]=1 continue return len(dic.items()) dictionary에 넣고 item만 세서 중복을 회피하였다 최적화 def solution(n): answer = 0 for i in range(4, n+1): if len([j for j in range(1, i+1) if i % j == 0]) > 2: answ..
berom
'알고리즘 풀이' 카테고리의 글 목록 (6 Page)