전체 글

🧩 Problem Solving/[백준]

[백준] 1205 등수 구하기 (python 파이썬)

1205번: 등수 구하기 첫째 줄에 N, 태수의 새로운 점수, 그리고 P가 주어진다. P는 10보다 크거나 같고, 50보다 작거나 같은 정수, N은 0보다 크거나 같고, P보다 작거나 같은 정수이다. 그리고 모든 점수는 2,000,000,000보 www.acmicpc.net 조건의 맞춰 문제를 해결하는 문제. 변수 N, P의 조건이 0

🧩 Problem Solving/[백준]

[백준] 21736 헌내기는 친구가 필요해 (python 파이썬)

21736번: 헌내기는 친구가 필요해 2020년에 입학한 헌내기 도연이가 있다. 도연이는 비대면 수업 때문에 학교에 가지 못해 학교에 아는 친구가 없었다. 드디어 대면 수업을 하게 된 도연이는 어서 캠퍼스 내의 사람들과 친해지고 www.acmicpc.net 평범한 그래프 탐색 문제. 아이디어 bfs 또는 dfs를 활용하여 문제를 해결하면 된다. 1. 그래프 시작지역 'I'는 캠퍼스 정보를 받아올 때 미리 찾아둘 수 있다. 2. 빈공간 뿐아니라 사람이 있는 지역 'P'도 이동 가능하다. 3. 정답을 출력할 때, 답이 0명이면 0이 아닌 "TT"를 출력해 주자. 전체 코드 from collections import deque dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] campus =..

🧩 Problem Solving/[프로그래머스]

[프로그래머스] 42883 큰 수 만들기 (python 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 개인적으로 좀 어려웠던 문제. 로직을 짜는 사고과정을 더 명확하게 할 필요가 있는 거 같다. 아이디어 기본적으로 큰 수를 만들려면 앞자리가 커야 한다 (8xxx < 9xxx) 그럼 앞자리부터 큰 수를 두려고 생각할 것이다. 앞자리에 큰 수를 어떻게 채울 수 있을까? 문제에서 숫자 한 개를 주고 K개의 수를 제거해서 최대로 만들라고 한다. 탐색 방향은? 앞에서부터 순서대로 탐색한다. 두 수를 비교해 가며 수를 버릴지 말지 결정하면 된다. 예제에 있는 4177252841을 가지고 설명하면, 먼저 4를 리스트에 담..

📜 Language/[python]

[파이썬] 반복문에서 인덱스와 요소 동시 순회 - enumerate

enumerate? 파이썬에서 for문으로 리스트와 같은 객체 순회할 때, enumerate로 요소의 순서(인덱스)와 요소를 동시에 순회할 수 있다. 리스트 말고 튜플, 딕셔너리에도 사용가능하다. 반복문(for 문) 다음과 같은 리스트가 있다고 생각해 보자. Arr = ['Vaundy', 'Kaze', 'Ayase'] 파이썬에서 for문으로 순회할 때 보통 다음과 같이 한다. for value in Arr: print(value) Vaundy Kaze Ayase 또 리스트의 인덱스를 순회할 때는 주로 다음과 같은 방법을 사용한다. for i in range(len(Arr)): print(i) 0 1 2 그럼 요소와 인덱스를 동시에 출력하고 싶을 때는 어떻게 해야 할까?라고 한다면 보통 다음과 같은 코드를..

🧩 Problem Solving/[프로그래머스]

[프로그래머스] 42626 더 맵게 (python 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr heap을 이용하는 문제. 되게 오랜만에 풀어본 유형이라 시간이 걸렸다. 여러 문제를 풀어보며 언제 heap을 쓰는 게 좋은지 연습해야겠다. 아이디어 문제를 해결하려면 scoville리스트에서 계속 가장 작은 값을 찾아서 return 해야 한다. min() 메서드의 시간 복잡도는 O(N)이다. 문제에서 주어진 리스트의 길이 최대가 크기 때문에 좀 더 효율적인 방법을 찾아야 한다. heap을 이용해서 우선순위 큐를 구현하면 시간을 단축할 수 있다. heappop의 시간 복잡도는 O(logN)이다. 전체 코드 i..

🧩 Problem Solving/[프로그래머스]

[프로그래머스] 42746 가장 큰 수 (python 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 리스트의 있는 숫자들을 나열해 가장 큰 수를 만드는 이해는 쉬운 문제. 숫자 나열의 대소관계를 잘 활용하면 해결할 수 있다. 아이디어 일단 수를 최대한 크게 만드는 원리를 알아야 한다. 3, 32, 34를 비교해 보면 34 > 3(33) > 32 순서대로 나열해야 한다. 또 32와 332를 비교하면 332가 32보다 앞에 와야 된다. 34와 343 를 비교해 보면 34가 343보다 앞에 와야 된다. (34343 > 34334) 이걸 풀어서 설명하면 34와 343은 34 -> 34343434... 343 -> ..

🧩 Problem Solving/[프로그래머스]

[프로그래머스] 42576 완주하지 못한 선수 (+딕셔너리 get) (python 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 난이도는 쉽지만, 익혀두면 좋은 기법들이 많다. 파이썬을 주력으로 쓰는 만큼 리스트 컴프리헨션을 많이 활용해야겠다. 아이디어 participant에 있는 이름을 key, 이름의 중복 개수를 value로 딕셔너리를 만들어준다. 그리고 completion를 순회하며 이름이 나올 때마다 -1 해준다. 문제에서 한 명의 선수만 완주하지 못했다고 했으므로 딕셔너리에서 value의 값이 1인 걸 찾아 return 해주면 된다. 전체 코드 def solution(participant, completion): dic ..

🧩 Problem Solving/[프로그래머스]

[프로그래머스] 42862 체육복 (python 파이썬)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr n 명의 학생이 있고, 학생들은 고유 번호가 있다. 근데 학생들 중 몇 명은 체육복을 도난당했다. 여벌이 있는 학생은 체육복을 빌려 줄 수 있다. 근데 체육복을 빌려주는 것은 바로 앞번호(i - 1) 또는 뒷번호(i + 1)만 빌려줄 수 있다. 체육복이 있어야 체육 수업을 들을 수 있다고 했을 때, 최대 몇 명까지 들을 수 있을까? 아이디어 학생 번호를 인덱스로 하는 리스트를 1로 초기화해 준다. 그리고 여벌이 있는 학생은 +1, 도난당한 학생은 -1 해준다. 그리고 반복문으로 리스트를 순회하며 도난당한 학생..

제봉아
Overthinking