본문 바로가기

Programming14

[Python] 자료구조(Data Structure) 자료구조(Data Structure) 효율적인 데이터 접근 및 관리를 위해 데이터를 특정 구조 형태로 모아놓은 것을 말한다. 다시 말해, 데이터를 어떤 방식으로 저장하고 관리할지를 정의하는 틀이라고 할 수 있다. 자료구조를 사용하는 이유 효율적인 데이터 관리 신속한 데이터 접근 메모리 사용 최적화 즉, 알고리즘에 따라 적합한 자료구조를 사용하여 실행 시간이나 메모리 용량을 보다 적게 사용하는 등의 보다 효율적인 연산이 가능하다. 자료구조의 종류(Type) 저장하고 관리하는 방식에 따라 여러가지 Type으로 분류한다. 파이썬에서 여러가지 자료구조를 지원하며 그 중 기본적이고 많이 사용되는 Type에는 List, Tuple, Dictionary, Set 등이 있다. List : 순서가 있는 수정 가능한 데이.. 2024. 3. 1.
[Mojo] 파이썬보다 3만5천배 빠른 AI 개발 언어 '모조' Mojo 🔥 — a new programming language for all AI developers. 모듈러(Modular)라는 개발사에서 파이썬보다 3만5천배 빠른 AI 개발용 프로그래밍 언어 "모조(Mojo)"를 출시했다. Mojo는 Python의 사용 편의성과 C의 성능을 결합하여 AI 하드웨어의 프로그래밍 가능성과 AI 모델의 확장성을 굉장히 높여줄 수 있는 개발 언어라고 한다. 이번 글에서는 AI 개발자들을 위한 새로운 프로그래밍 언어 모조(Mojo)에 대해 알아본다. 사용 편의성 및 호환성 기본적으로 파이썬 코드를 거의 그대로 실행 가능하다. Python 에코 시스템과의 높은 호환성으로 Numpy나 Matplotlib 등의 라이브러리를 Mojo에서 원활하게 이용이 가능하다. 또한, 공식 웹.. 2023. 5. 12.
[프로그래머스 Lv.2] 혼자 놀기의 달인 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * cards의 원소는 "자연수"이다. 요약: 모든 그룹의 상자 개수를 구하고 가장 큰 수와 두 번째로 큰 수를 곱하여 반환한다. 인덱스 순서대로 cards 배열의 원소를 확인한다. 이때, 자연수가 아닌 0인 원소는 열어본 상자로 간주한다. 열어본 상자가 아니라면 해당 원소값을 다음 확인할 인덱스로 정하며 해당 원소는 열어봤다는 의미로 0으로 바꾼다. 열어본 상자를 발견할 때까지 1~2를 반복하며 해당 작업의 수행 횟수를 저장한다. 열어본 상자를 발견하면 answer 변수에 이번 회차 작업.. 2022. 10. 28.
[프로그래머스 Lv.2] H-Index (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 논문별 인용 횟수 배열(citations)을 내림차순 정렬한 배열의 인덱스는 해당 논문의 인용 횟수 이상의 인용 횟수를 가진 논문의 수와 같다. citations을 내림차순 정렬하여 인덱스 순서대로 인덱스 값이 인용 횟수보다 크거나 같은지 확인한다. 인덱스 값이 인용 횟수보다 큰 경우를 발견하면 해당 인덱스를 반환한다. 발견하지 못한 경우 전체 논문의 수를 반환한다. [코드] def solution(citations): for i, j in enumerate(sorted(citation.. 2022. 10. 28.
[프로그래머스 Lv.2] 카펫 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이 2] * 카펫의 가로, 세로 각각의 격자의 수는 모든 격자의 수의 약수이다. * 즉, 모든 격자의 수 ÷ 세로 격자의 수 = 가로 격자의 수 * 노란색 격자의 수 = (카펫의 가로 격자의 수 - 2) * (카펫의 세로 격자의 수 - 2) * 노란색 겉 테두리 1줄은 갈색 격자로 이루어져야 하므로 카펫의 가로, 세로 격자의 최소 수는 3 이상이다. 갈색과 노란색 격자의 수를 모두 더하여 총 합을 구한다. 3이상, 총 합 이하의 수를 차례로 대입하여 다음 식이 성립하는 약수 y를 찾는다. {(총.. 2022. 10. 26.
[프로그래머스 Lv.2] 큰 수 만들기 (파이썬 풀이) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 이 문제는 시간 복잡도를 최소화해야 함. * 탐욕법(Greedy) 유형의 문제라는 것이 힌트. * combinations나 max 함수로는 제한 시간에 맞추기 어려움. 만들고자하는 가장 큰 수의 앞자리부터 순서대로 찾기 위한 범위를 매번 설정해야 한다. 찾을 범위 시작 위치 인덱스는 0, 끝 위치 인덱스는 (number의 총 길이 - 만들고자하는 수의 총 길이)로 초기화 한다. 찾을 범위 끝 위치 인덱스+1 로 범위를 갱신하고 현재 범위 내에서 최댓값을 찾아 정답이 될 문자열 변수에 추.. 2022. 10. 25.
[프로그래머스 Lv.2] 롤케이크 자르기 (파이썬 풀이) 문제링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] * 이 문제는 시간 복잡도를 줄이는 것이 관건인 문제. 전체 토핑의 종류와 개수를 딕셔너리로 만든다. (Hashable 하게 만들어 연산 속도를 줄이기 위함) 빈 세트을 선언한다. topping에서 마지막 토핑을 pop하여 세트에 추가하며 동시에 딕셔너리에서 해당 토핑의 개수를 1 감소시킨다. 이때, 토핑의 개수가 0인 경우 딕셔너리에서 해당 키값을 삭제한다. 이후 딕셔너리의 길이와 세트의 길이가 같으면 자르는 방법의 수를 1 증가시킨다. 딕셔너리의 길이가 세트의 길이보다 크거나 같으면 3~.. 2022. 10. 22.
[파이썬] 조건문 조건에 따라 서로 다른 명령을 수행하도록 하는 명령문 조건문 종류 if문 → 단일조건 - if의 조건이 성립하면 실행 if ~ else문 → 양자택일 - if의 조건이 성립하면 실행 - if의 조건이 성립하지 않는 경우 else 이하 명령 실행 if ~ elif문 → 다자택일 - if의 조건이 성립하면 실행 - if의 조건이 성립하지 않는 경우 elif 이하 조건이 성립여부 확인 및 명령 실행 - elif 여러개 설정 가능 (?) A if [조건] else B → [조건]이 True이면 A를 실행, 아니면 B를 실행 [예시1] a = 10 b = 20 result = True if a > b else False print("a > b : {}".format(result)) print("a는 b보다 크다... 2022. 4. 28.
[파이썬] 연산자 연산자(Operator) 연산 실행에 있어서 여러 식이나 값에 수학적·논리적인 움직임, 즉 어떤 연산을 할 지 지정하는 것. 피연산자 연산의 대상이 되는 것 연산자 종류 산술 연산자: +, -, *, /, %, //, ** 할당 연산자: =, +=, -=, *=, /=, %=, //= 비교 연산자: >, >=, = b)) print("{} == {} : {}".format(a, b, a == b)) print("{} != {} : {}".format(a, b, a != b)) 1 = 2 : False 1 == 2 : False 1 != 2 : True [예시] 아스키 코드를 이용한 문자 비교 연산 (아스키 코드표 링크 넣기) # 아스키 코드 비교 연산 a =.. 2022. 4. 28.