전체 글 73

[Programmers] 둘만의 암호

문제 설명 두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. 문자열 s의 각 알파벳을 index만큼 뒤의 알파벳으로 바꿔줍니다. index만큼의 뒤의 알파벳이 z를 넘어갈 경우 다시 a로 돌아갑니다. skip에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 'a'에서 5만큼 뒤에 있는 알파벳은 [c, e, f, g, h] 순서에 의해 'h'가 됩니다. 나머지 "ukks" 또한 위 ..

[2023/09/13] Stability AI, Text to Audio 를 만드는 오디오 생성 모델 발표

Stability AI debuts Stable Audio bringing text to audio generation to the masses Stability AI today announced the initial public release of its Stable Audio technology, providing anyone with ability to use simple text prompts to generate short audio clips. venturebeat.com 핵심 포인트 : Stability AI는 최근 Stable Audio라는 기술을 발표함. 이 모델은 사용자가 텍스트를 통해 짧은 오디오 파일을 생성할 수 있게 해주는 것으로, 회사의 기존 이미지 생성 AI 모델인 Stable..

[Programmers] 바탕화면 정리

문제 설명 코딩테스트를 준비하는 머쓱이는 프로그래머스에서 문제를 풀고 나중에 다시 코드를 보면서 공부하려고 작성한 코드를 컴퓨터 바탕화면에 아무 위치에나 저장해 둡니다. 저장한 코드가 많아지면서 머쓱이는 본인의 컴퓨터 바탕화면이 너무 지저분하다고 생각했습니다. 프로그래머스에서 작성했던 코드는 그 문제에 가서 다시 볼 수 있기 때문에 저장해 둔 파일들을 전부 삭제하기로 했습니다. 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판입니다. 이때 컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 wallpaper가 주어집니다. 파일들은 바탕화면의 격자칸에 위치하고 바탕화면의 격자점들은 바탕화면의 가장 왼쪽 위를 (0, 0)으로 시작해 (세로 좌표, 가로 좌표)로 표현합니다. 빈칸은 ".", 파일이 있는 칸은 "#"의 값을..

[2023/09/08] 정자와 난자가 없는 줄기세포 기반의 배아모델 생성

Scientists grow whole model of human embryo, without sperm or egg The research helps understanding of the earliest moments of life and the reasons behind infertility. www.bbc.com 핵심 포인트 : 1. The Weizmann Institute team say their "embryo model", made using stem cells, looks like a textbook example of a real 14-day-old embryo. It even released hormones that turned a pregnancy test positive in the ..

[Python] Quick Sort (퀵 정렬)

Quick sort 알고리즘 설명 : 1. 배열에서 '피벗' 원소를 선택. 2. 피벗보다 작은 원소는 피벗의 왼쪽으로, 큰 원소는 오른쪽으로 이동. 3. 이렇게 하면 피벗은 최종 정렬된 위치에 오게 됨. 4. 피벗을 기준으로 두 개의 하위 배열이 생성함. 5. 이 하위 배열에 대해 같은 작업을 재귀적으로 반복함. 시간 복잡도 : 최선, 평균의 경우 : O(nlogn) 최악의 경우 : O(n2) # 퀵 정렬 (Quick Sort) # 피벗을 기준으로 배열을 두 부분으로 나눔. def partition(arr, low, high): pivot = arr[high] # 피벗 설정 (여기서는 배열의 마지막 원소를 피벗으로 사용) i = low - 1 # 작은 원소의 인덱스 # 배열을 피벗을 기준으로 두 부분으로..

[Programmers] 달리기 경주

문제 설명 얀에서는 매년 달리기 경주가 열립니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 때 추월한 선수의 이름을 부릅니다. 예를 들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 때, 해설진이 "soe"선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, "mumu" 선수가 2등으로 바뀝니다. 선수들의 이름이 1등부터 현재 등수 순서대로 담긴 문자열 배열 players와 해설진이 부른 이름을 담은 문자열 배열 callings가 매개변수로 주어질 때, 경주가 끝났을 때 선수들의 이름을 1등부터 등수 순서대로 배열에 담아 return 하는 solution 함수를 완성해주세요. 제한사항 5 ≤..

[2023/09/06] 노보 노디스크의 체중 감량 약물, 심부전에도 긍정적인 효과

Weight-loss drugs Ozempic and Wegovy also protect your heart Semaglutide reduces heart failure symptoms by bringing down body weight. arstechnica.com 핵심 포인트 : 1. In a trial of more than 500 patients with obesity and heart failure in 13 countries, those who got a weekly injection of semaglutide over the course of a year reduced symptoms such as fatigue, shortness of breath, and swelling. They als..

[2023/09/04] Neural Net를 통한 화학 구조와 냄새 사이의 관계 매핑 모델 개발

This Neural Net Maps Molecules to Aromas Sights and sounds are easily digitized, but scents have eluded researchers until now spectrum.ieee.org 핵심 포인트 : 본 연구에서는 Graph Neural Network, GNN을 활용하여 화학 구조와 냄새 간의 관계를 매핑하는 모델을 개발하였음. 이 연구는 최근 Science지에 게재됨. 이 모델은 향수 산업에서 얻어낸 5,000개 이상의 분자와 그에 대한 전문가의 냄새 노트를 학습 데이터로 사용하였으며, 이를 통해 새로운 분자의 구조가 어떻게 그 냄새가 묘사될지 학습된 지도를 통해 예측함. 이 모델은 냄새의 '주요 냄새 지도'를 생성하며, 이는 시..

[2023/09/04] Apple Vision Pro에 대항하기 위한 Meta 와 LG의 협력 발표.

Meta and LG working together on new Apple Vision Pro competitor Even before Apple unveiled Vision Pro, Meta already had virtual reality headsets called Meta Quest (which were created after Meta... 9to5mac.com 핵심 포인트 : Meta와 LG는 Apple의 Vision Pro와 경쟁하기 위해 2025년에 약 2,000달러의 가격으로 새로운 VR 헤드셋을 출시할 계획.이는 이미 나온 Meta Quest Pro의 2배, 그리고 곧 나올 Meta Quest3의 3.5배 이상 수준. 이러한 가격 설정은 두 회사가 Apple Vision Pro와 경쟁하..

[Python] Merge Sort (병합 정렬)

Merge sort 알고리즘 설명 : 1. 배열을 두 부분으로 나눔. 2. 나눈 각 부분을 재귀적으로 병합 정렬함. 3. 정렬된 두 부분을 병합하여 하나의 정렬된 배열을 만듬. 시간 복잡도 : 최선, 평균, 최악의 경우 모두 : O(nlogn) # 병합 정렬 (Merge Sort) # 병합 함수: 두 개의 정렬된 리스트를 하나의 정렬된 리스트로 병합. def merge(left, right): result = [] i = j = 0 # 두 리스트의 원소를 비교하여 작은 원소를 결과 리스트에 추가. while i < len(left) and j < len(right): if left[i] < right[j]: result.append(left[i]) i += 1 else: result.append(righ..

[2023/08/25] 메타 출신의 바이오텍 스타트업, 최소 4천만 달러의 투자 확보

Ex-Meta Researchers Have Raised $40 Million From Lux Capital For An AI Biotech Startup Alex Rives, the research lead of Meta’s former AI protein team, is interim CEO for new startup EvolutionaryScale, which is developing biological large language models. www.forbes.com 핵심 포인트: EvolutionaryScale은 4월에 프로젝트를 중단할 때까지 Meta AI의 protein folding 팀을 이끈 Alexander Rives가 주도하고 있음. 창립 멤버 8명 모두 같은 부서에서 출신이고 트..

[Python] Insertion Sort (삽입 정렬)

Insertion sort 알고리즘 설명 : 1. 배열을 두 부분, 정렬된 부분과 정렬되지 않은 부분으로 분리함. 2. 정렬되지 않은 부분의 첫 번째 원소를 적절한 위치에 삽입하여 정렬된 부분을 확장. 3. 이 과정을 정렬되지 않은 부분이 없을 때까지 반복. 시간 복잡도 : 최선의 경우 : O(n) 평균, 최악의 경우 : O(n^2) # 삽입 정렬 (Insertion Sort) def insertion_sort(arr): n = len(arr) # 외부 루프: "첫" 번째 원소부터 마지막 원소까지 반복. for i in range(1, n): # 현재 원소를 key 변수에 저장. key = arr[i] # 현재 원소의 앞부분에 있는 정렬된 배열에서 key가 들어갈 위치를 찾습니다. j = i - 1 wh..

[2023/08/29] Meta, Computer Vision를 위한 FACET 벤치마크 공개

Meta releases a dataset to probe computer vision models for biases | TechCrunch Meta has released a new dataset, FACET, to probe computer vision models for biases against certain 'classes' of people. techcrunch.com 핵심 포인트: Meta가 FACET(FAirness in Computer Vision EvaluaTion)라는 새로운 AI 벤치마크를 공개함. 이 벤치마크는 사진과 비디오에서 객체와 사람을 분류하고 감지하는 AI 모델의 공정성을 평가하기 위한 목적으로 설계되었고, 32,000개의 이미지와 50,000명의 사람을 포함하며, 이들..

[Python] Selection Sort (선택 정렬)

Selection sort 알고리즘 설명 : 1. 배열의 첫 번째 원소부터 마지막 원소까지 검사하여 최소값을 찾음. 2. 최소값을 배열의 첫 번째 원소와 교환. 3. 배열의 두 번째 원소부터 마지막 원소까지 다시 최소값을 찾고, 두 번째 원소와 교환. 4. 이 과정을 배열이 완전히 정렬될 때까지 반복. 시간 복잡도 : 최선, 평균, 최악의 경우 모두 : O(n^2) # 선택 정렬 (Selection Sort) def selection_sort(arr): n = len(arr) # 외부 루프: 현재 인덱스부터 마지막 인덱스까지 검사하여 최소값을 찾음. for i in range(n): min_idx = i # 최소값의 인덱스를 저장하는 변수 # 내부 루프: 현재 인덱스부터 마지막 인덱스까지 최소값을 찾음...

[Python] Bubble sort (버블 정렬)

Bubble sort 알고리즘 설명 : 1. 배열의 첫 번째 원소부터 마지막 원소까지 인접한 원소끼리 비교. 2. 인접한 두 원소의 순서가 잘못되어 있다면 교환. 3. 이 과정을 전체 배열에 대해 반복. 한 번의 완전한 반복이 끝나면 배열의 가장 큰 원소가 배열의 마지막으로 이동. 4. 가장 큰 원소가 마지막으로 이동했으므로, 이제 마지막 원소를 제외한 나머지 배열에 대해 같은 작업을 반복. 5. 이 과정을 배열이 완전히 정렬될 때까지 반복. 시간 복잡도 : 최선의 경우: O(n) (이미 정렬된 배열) 평균과 최악의 경우: O(n^2) # 버블 정렬 (Bubble Sort) def bubble_sort(arr): n = len(arr) # 외부 루프: 각 반복마다 배열의 마지막 원소가 정렬. for i ..

[Python] generator 와 itertools

1. Generator Generator는 파이썬의 이터러블(iterable) 객체 중 하나로, 일반적인 함수처럼 값을 반환(return)하는 대신 yield 키워드를 사용해 값을 하나씩 내보내도록 함. 제너레이터는 모든 데이터를 메모리에 저장하지 않기 때문에 더 효율적이며, 따라서 대용량 데이터 처리에 유용함. 제너레이터는 데이터를 지연 평가(lazy evaluation)하므로, 필요한 순간에만 데이터를 생성하기 떄문에, 연산 속도를 향상시킬 수 있다는 장점이 있으며, 마지막으로 내장 함수와 함께 사용하면 코드를 간결하게 작성할 수 있음. 1. 제곱수를 생성하는 generator def square_numbers(nums): for i in nums: yield i * i my_nums = square..

[Programmers] 기능개발

문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자연..

[Programmers] 튜플

문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'..

[Python] map 과 lambda

1. map 함수 정의: map() 함수는 주어진 함수를 지정된 이터러블(iterable, 예: 리스트, 튜플)의 모든 항목에 적용하여 결과를 반환. 반환된 결과는 map 객체이며, list()나 tuple()와 같은 함수를 사용해 리스트 또는 튜플로 변환. map(function, iterable, ...) input을 입력받은 뒤 이걸 함수에 넣기 위해 전처리를 하는 과정에서 map 함수가 자주 쓰이길래 찾아봤다. # 입력 예: 1 2 3 4 5 numbers = list(map(int, input().split())) print(numbers) # [1, 2, 3, 4, 5] # 입력 예: apple,banana,cherry fruits = list(map(str, input().split(',')..