전체 글
[백준] 11000. 강의실 배정
[백준] 11000. 강의실 배정 - 파이썬 https://www.acmicpc.net/problem/11000 풀이 Greedy를 생각하며.. 힙을 이용해 품. 강의를 모두 순회하며 강의의 종료시간을 최소 힙에 집어넣는데, 최소 힙의 root(제일 빠른 종료시간) > 처리할 강의의 시작시간 이면 그대로 최소 힙에 처리할 강의의 종료시간을 넣고(강의실을 +1) 아니라면, 그 강의실에서 계속 강의해도 되니까 최소 힙에서 pop하고 다시 새로운 종료시간을 넣음. import heapq import sys read = sys.stdin.readline N = int(read().strip("\n")) lec = [list(map(int, read().strip("\n").split())) for _ in ra..
[프로그래머스] 42862. 체육복
접근 가장 주의할 점은, 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다. 이 조건. 도난당했으나 여벌 체육복이 있는 학생(lost, reserve 배열에 모두 포함되는 학생)은 미리 빼 줄 필요가 있음. 그 이후는 lost를 순회하며 reserve에 +1 or -1 학생이 존재하는 지(앞뒤에 여벌 체육복을 가진 학생이 존재하는 지)만 확인. 확인할 때, 오름차순으로 순회할 거면 index가 -1인 학생(앞에 있는 학생)부터 체육복이 있는 지 조사하고, 내림차순으로 순회할 때는 반대로 index가 +1인 학생(뒤에 있는 학생)부터 조사해야 함. def solution..
[프로그래머스] 43164. 여행경로
풀이 1 deq에 넣어가며 하나씩 빼면서.. from collections import deque def solution(tickets): ticketDeq = deque(tickets) deq = deque(["ICN"]) answer = ["ICN"] while ticketDeq: start = deq.popleft() for s, f in ticketDeq: if s == start: deq.append(f) mini = min(deq) deq.clear() ticketDeq.remove([start, mini]) deq.append(mini) answer.append(mini) return answer 풀이 틀림. 풀이 2 조심해야 할 점이 있었습니다. 중복된(같은 이름의) 티켓이 여러 장 들어갈..
[프로그래머스] 42898. 등굣길
풀이 1 보자마자 생각나는 것.. 확통에서 풀던 최단거리 경우의 수 문제 (같은 것이 있는 순열) 그 방식대로 풀이해보자 from math import factorial def solution(m, n, puddles): def shortcut(m, n): return int(factorial(m+n) / (factorial(m) * factorial(n))) answer = shortcut(m-1, n-1) for li in puddles: answer -= shortcut(m - li[0], n - li[1]) * shortcut(li[0]-1, li[1]-1) return answer 이러면 문제가.. puddles의 개수가 2개를 넘어가면 두 웅덩이를 모두 지나는 경우의 수를 여러 번 빼 주게 되..
[WSL, 터미널] - /usr/bin/env: ‘bash\r’: No such file or directory 오류
오류 메시지 /usr/bin/env: ‘bash\r’: No such file or directory 문제 상황 WSL, 우분투, zsh를 이용해 터미널을 커스터마이징 한 후에 flutter doctor 실행시켜 보려니까 저거 뜸. 윈도우와 Mac/Linux 상에서 개행 문자가 서로 CRLF(\r\n), LF(\n) 로 달라 발생한 문제라고 함. 해결1 WSL을 껐다가 다시 키면 자동으로 해결된대서 해봤는데 안됨. 이걸로 될 수도 있으니 일단 시도해보시길 powershell에서 > wsl --shutdown > wsl 해결 2 WSL 상에서 /etc/wsl.conf 파일을 수정해야 한다고 함. 파일이 없다고 뜨면 먼저 sudo touch /etc/wsl.conf 로 생성해 주고, sudo nano /et..
[Flutter] cmdline-tools component is missing 오류
오류 메시지 [!] Android toolchain - develop for Android devices (Android SDK version 33.0.0) X cmdline-tools component is missing Run `path/to/sdkmanager --install "cmdline-tools;latest"` See https://developer.android.com/studio/command-line for more details. 해결 안드로이드 SDK 환경 변수 추가가 안되어서 일어난 듯. 안드로이드 스튜디오 - SDK 매니저 - Android SDK 로 들어가 SDK Tools 에서 Android SDK Command-line Tools(latest) 를 설치. Android S..
[안드로이드 스튜디오] - 원하는 가상 기기 에뮬레이터(Virtual Device) 추가하기
1. 삼성 개발자 사이트 접속 https://developer.samsung.com/galaxy-emulator-skin/guide.html 으로 접속하여 자신이 원하는 핸드폰을 검색. 2. 핸드폰 스킨 다운로드 DOWNLOAD SKIN을 눌러 원하는 핸드폰 스킨을 다운로드. 나는 내가 쓰는 폰이 A52라서 이거 다운로드 함. 다운받기 전에 삼성 계정 로그인 해야되고, 약관 동의 해야 한다. 알아서 잘 하세요 3. 기기 추가하기 먼저 안드로이드 스튜디오 폴더에서 Android Studio\plugins\android\resources\device-art-resources 로 들어가 다운받은 스킨을 집어넣기. 이후 안드로이드 스튜디오 실행 안드로이드 스튜디오에서 Device Manager - Create ..
[프로그래머스] 43163. 단어 변환
Programmers - 43163. 단어 변환 접근 BFS로 구현. 한 스텝마다, deq에 있는 단어들에서 변경할 수 있는 단어 목록을 뽑아와 저장. 그리고 그 목록을 다시 다음 스텝에 deq에서 하나씩 뽑아와서 반복. from collections import deque def solution(begin, target, words): def canChange(fromWord, toWord): difChar = 0 for i in range(len(fromWord)): if fromWord[i] == toWord[i]: continue else: difChar += 1 if difChar == 1: return True else: return False if target not in words: ret..