개발/CS/알고리즘

MOC: Index: 문제 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한다. 또 모든 인접한 두 방 사이의 거리는 같은 거리(거리 1)라고 가정하고 호텔의 정..
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: 문제 정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요. 코드 class Solution { public int solution(int num1, int num2) { int answer = num1 == num2 ? 1 : -1; return answer; } } Java에서 삼항 연산자를 사용하는 방법을 배웠다 int answer = (조건) ? 변수 1 : 변수 2 형태로 사용 하면 된다 더 궁금해하자 : 삼항 연산자를 사용했을 때의 트레이드 오프는? 찾아보니, 기능적으로 if-else와 동일하다고 한다. 즉 성능적인 저하는 없다 그러나, 간결함을 얻는 대신 디버깅과 유지보수의 어려움을 초래..
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..
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, 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..
문제 이 문제는 선분 세 개로 삼각형을 만들기 위한 조건을 만족하는 선분의 개수를 찾는 것입니다. 삼각형을 만들기 위한 조건은 가장 긴 변의 길이가 다른 두 변의 길이의 합보다 작아야 한다는 것입니다. 삼각형의 두 변의 길이가 담긴 배열 sides가 주어지고, 나머지 한 변이 될 수 있는 정수의 개수를 반환하는 함수를 작성해야 합니다. 제한사항 sides의 원소는 자연수입니다. sides의 길이는 2입니다. 1 ≤ sides의 원소 ≤ 1,000 입출력 예 예시 1: sides가 [1, 2]인 경우, 결과는 1입니다. 두 변이 1, 2인 경우 삼각형을 완성시키려면 나머지 한 변이 2여야 합니다. 문제 풀이 def solution(sides): sides.sort() return 2*sides[0]-1 부..
berom
'개발/CS/알고리즘' 태그의 글 목록 (4 Page)