본문 바로가기

알고리즘65

[BOJ] 15683. 감시 문제https://www.acmicpc.net/problem/15683  주요 아이디어생각보다 구현이 까다로운 문제였다.위 다섯 종류의 90도 회전이 가능한 감시 카메라가 맵에 배치되어 있으며, 맵 전체에서 사각지대 영역의 최소 넓이를 측정하는 문제이다.또한 CCTV는 서로를 통과할 수 없다는 조건이 걸려있다.CCTV는 8개 이하이므로 완전탐색 (=브루트 포스) 으로 문제를 해결한다CCTV의 회전 방향을 따로 rotation 배열에 저장해둔다맵에 있는 모든 CCTV를 회전시켜보고, 그 때마다 면적을 체크해서 최소 면적으로 갱신한다 코드 구현 (Python 3)더보기 """사각지대를 최소화하기브루트포스니까 모든 경우의 수 전부 비교1. 감시 당하는 부분 #으로 표시2. CCTV 좌표 저장해두고, 하나씩 회.. 2024. 5. 21.
[프로그래머스] 거리두기 확인하기 문제https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  주요 아이디어대기실에 있는 모든 응시자들이 맨해튼 거리 2 초과로 앉아있거나 / 응시자 사이가 파티션으로 막혀있는지를 판단하는 문제이다.모든 강의실 자리를 서칭하면서, 하나라도 예외가 존재하면 return 0 / 존재하지 않을 경우 return 1BFS 방식으로 모든 응시자의 자리로부터 맨해튼 거리 2 이내에 파티션을 사이에 두지 않은 응시자가 존재하는지 확인  코드 구현 (Python 3)더보.. 2024. 5. 21.
[프로그래머스] 키패드 누르기 문제https://school.programmers.co.kr/learn/courses/30/lessons/67256 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  주요 아이디어문제를 꼼꼼하게 읽고 풀기만 하면 되는 구현 문제이다.맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작1열의 3개 1, 4, 7은 왼손 엄지 / 3열의 3개 369는 오른손 엄지가운데 열은 2580을 입력할 때는 현재 위치에서 더 가까운 엄지 사용거리 같다면 오른손잡이는 오른손, 왼손잡이는 왼손키패드의 좌표를 dictionary 형태로 저장움직일 때.. 2024. 5. 21.
[BOJ] 13414. 수강신청 문제https://www.acmicpc.net/problem/13414  주요 아이디어대기 목록을 전달받고, 중복이 되어있을 경우 대기목록의 맨 뒤로 가야 한다.입력을 받는 순서대로 dictionary에 추가한다이미 있을 경우 (뒤로 밀려나기 때문에) dict의 value가 갱신된다  코드 구현 (Python 3)더보기 import sysdef solution(k, l): students = [sys.stdin.readline().strip() for i in range(l)] student_dict = {} # dictionary 추가 ('학번' : '순서') for i, student in enumerate(students): student_dict[student] = i.. 2024. 5. 21.
[프로그래머스] 폰켓몬 문제https://school.programmers.co.kr/learn/courses/30/lessons/1845 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr    주요 아이디어문제 길이는 상당히 길지만 set을 쓰면 굉장히 간단하게 풀리는 문제이다.N/2마리의 폰켓몬을 선택하는 방법 중 가장 많은 종류의 폰켓몬을 선택하려면, 다음 조건문을 만족하면 된다.전달 받은 폰켓몬 종류 번호의 unique 값이 N/2일 경우 : 그대로 N/2 반환전달 받은 폰켓몬 종류 번호의 unique 값이 N/2 보다 작을 경우 : unique 값 반환  코드 구현 (Pyth.. 2024. 5. 21.
[프로그래머스] 행렬의 곱셈 문제https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr  주요 아이디어행렬을 전치하는 것이 이번 문제의 핵심이다.numpy 라이브러리를 사용하면 메서드를 통해 굉장히 쉽게 전치가 가능하지만.. 순정 파이썬으로도 리스트 전치를 쉽게 할 수 있는 방법에 대해 숙지하과 가자.arr_T = list(map(list, zip(*arr)))  코드 구현 (Python 3)더보기 def solution(arr1, arr2): answer = [] # .. 2024. 5. 21.