728x90 전체 글279 [PG/Python] 단어 변환 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 📌 문제 접근 방법 dfs를 사용하여 풀이하였고, 스택에 변환 횟수를 같이 저장해주었다. 만약 target 단어가 words에 없다면 바로 0을 리턴한다. words에 target이 있다면 스택에서 하나씩 pop하여 words에 있는 단어와 비교한다. words의 단어와 딱 한 글자만 다른 단어를 다시 스택에 .. 2021. 12. 22. [PG/Python] 다단계 칫솔 판매 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr 📌 문제 접근 방법 본인의 이름을 key값으로 추천인의 이름을 value로 recommender에 저장한다. 본인의 이익은 10%를 빼고 저장하고 temp에 10%만 다시 담는다. 계속해서 부모 노드(추천인)을 타고 올라가면서 10%만 담는 과정을 반복한다. 추천인이 -가 되거나 temp에 담긴 값이 0이 되면 반복문을 멈춘다. (0일때 안멈추면 .. 2021. 12. 17. [PG/Python] 배달 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/12978 코딩테스트 연습 - 배달 5 [[1,2,1],[2,3,3],[5,2,2],[1,4,2],[5,3,1],[5,4,2]] 3 4 6 [[1,2,1],[1,3,2],[2,3,2],[3,4,3],[3,5,2],[3,5,3],[5,6,1]] 4 4 programmers.co.kr 📌 문제 접근 방법 다익스트라 알고리즘을 사용하였다. 우선 각각의 노드간의 연결 관계를 인접행렬에 저장해주었다. 연결 관계가 2개 이상인 경우도 있기에, 이미 값이 있다면 최소의 거리를 저장하도록 했다. distance라는 리스트를 만들어서 여기에 해당 노드까지 가는 최소 거리를 저장하였다. 항상 출발지는 1번 노드이므로 1번 .. 2021. 12. 16. [PG/Python] 행렬 테두리 회전하기 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 📌 문제 접근 방법 입력으로 들어온 행과 열의 크기에 따라 2차원 리스트를 생성한다. 리스트에 시계방향으로 '오른쪽->아래->왼쪽->위'의 방향을 저장한다. queries를 하나씩 순회하며 회전을 시키고, 회전할 때마다 최소값을 갱신한다. 1회 회전이 끝날 때마다 저장된 최소값을 answer에 저장한다. 📌 코드 def solution.. 2021. 12. 16. [PG/Python] 튜플 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 📌 문제 접근 방법 입력이 문자열로 들어오기 때문에 split을 쓰려다가 ','로 끊는 건 안되겠다 생각하고 포기했는데, 생각해보니 '},'으로 끊으면 됐었다. 우선, split을 사용하지 않고 sets에 문자열로 들어온 입력값을 리스트 형태로 바꿔서 저장해주었다. sets를 길이순대로 정렬한 후, s.. 2021. 12. 16. [OS] 물리 메모리 관리 메모리 관리 CPU의 작업 공간 = 메모리, 모든 프로그램은 메모리에 올라와야 실행 가능 메모리 구조는 1B 크기로 나뉨, 각 영역은 메모리 주소로 구분 (0번지부터 시작) 메모리 주소 레지스터 (MAR) : CPU가 메모리에 있는 내용을 가져오거나 작업 결과를 메모리에 저장하기 위해 사용 - 메모리 관리의 이중성 프로세스 입장에서는 메모리를 독차지하려 하고, 메모리 관리자 입장에서는 되도록 관리를 효율적으로 하고 싶어 하는 것 프로세스 입장에서의 작업의 편리함과 관리자 입장에서 관리의 편리함이 충돌을 일으키는 것 소스코드의 번역과 실행 - 컴파일러와 인터프리터 저급 언어 (low level language) : 컴퓨터의 동작을 가장 직접적으로 표현한 언어, 기계어(0과 1)/어셈블리어 고급 언어 (hi.. 2021. 12. 9. [OS] 교착 상태 교착 상태 (dead lock) 2개 이상의 프로세스가 다른 프로세스의 작업이 끝나기만 기다리며 작업을 더 이상 진행하지 못하는 상태 아사 현상과 달리, 정책상 잘못이나 오류가 없어도 자연적으로 발생 - 교착 상태의 발생 시스템 자원, 공유 변수 (또는 파일), 응용 프로그램 사용 시 발생 시스템 자원 : 어떤 프로세스가 임계구역으로 보호되는 프린터, 스캐너, CD 레코더 등 동시에 같이 사용할 수 없는 시스템 자원을 할당받은 후 양보하지 않는 경우 공유 변수 : 한 변수를 할당받은 상태에서 다른 변수를 기다릴 경우, 모든 프로세스가 임계구역에 들어가지 못하는 교착 상태 발생 (무한 대기) 응용 프로그램 : 데이터베이스가 데이터 일관성을 유지하기 위해 사용하는 잠금에서 교착 상태 발생 가능 자원 할당 그.. 2021. 12. 9. [PG/Python] 가장 먼 노드 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 📌 문제 접근 방법 인접 리스트를 활용해서 그래프 정보를 저장해준 뒤 bfs를 사용했다. bfs에서 방문체크를 할 때, 1번 노드와의 거리를 저장해줬다. (가장 먼 거리가 1일 경우에도 1번 노드는 포함되지 않아야하므로 1번 노드는 -1로 방문체크를 해줬다.) bfs 탐색이 끝난 후, visited를 순회하면서 거리가 가장 먼 노드의 개수를 세어 반환한다. 📌 코드 from collections import deque de.. 2021. 12. 9. [PG/Python] 기능개발 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr 📌 문제 접근 방법 먼저 progresses와 speeds를 queue로 만들어줬다. progresses가 빌 때까지 작업과 배포를 반복한다. 작업은 progresses의 0번째 작업과 speeds의 0번째 속도를 더해서 progresses의 마지막에 다시 push해줬다. 배포는 progresses를 순회하며 앞에서부터 작업량이 100이 넘은 작.. 2021. 12. 9. [BOJ/Python] 2096. 내려가기 📌 문제 https://www.acmicpc.net/problem/2096 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net 📌 문제 접근 방법 처음엔 dfs를 사용해서 최소값, 최대값을 갱신시켰는데 숫자가 많아질수록 모든 숫자를 저장하는 자체에서 메모리 초과가 발생하는 것 같았다. 따라서 입력 숫자를 저장하지 않고 입력받자마자 바로 사용할 수 있도록 dp를 사용해서 구현했다. 아래줄의 입장에서 0번째 숫자는 윗줄의 0, 1번째 숫자를 더할 수 있고, 1번째 숫자는 윗줄의 모든 숫자, 2번째 숫자는 윗줄의 1, 2번째 숫자를.. 2021. 12. 8. 이전 1 2 3 4 5 6 7 8 ··· 28 다음 728x90