알고리즘 78

[프로그래머스] 빛의 경로 사이클 C++ (Lv.2)

https://school.programmers.co.kr/learn/courses/30/lessons/86052 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 BFS와 유사한 문제였습니다. 빛이 4방향(상, 우, 하, 좌)으로 이동할 수 있기 때문에 3차원 배열을 사용하여 방문 여부를 확인해 주었습니다. 📝 문제 풀이 1. 각 칸마다 4개의 방향(상, 우, 하, 좌)으로 getLengthOfCycle 함수 실행 2. 아직 해당 방향으로 빛을 쏘지 않은 칸이라면 • cnt 변수(경로 사이클의 길이) 1 증가 • 해당 방향으로 빛을 쏜 칸임을 ..

[프로그래머스] LV.1 공원 산책 C++

https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 BFS와 유사한 문제였습니다. 2가지 방법으로 구현했습니다. 1. BFS와 유사하게 풀이 📝 문제 풀이 1. map 컨테이너를 이용하여 방향을 나타내는 문자('N' 또는 'S' 또는 'W' 또는 'E')와 해당 좌표를 인덱스로 매핑 2. 시작점을 loc 변수에 저장 3. routes(로봇 강아지가 수행할 명령이 담긴 문자열 배열)를 순회하면서 각 명령마다 거리(n)만큼 while문 ..

[프로그래머스] 호텔 방 배정 JavaScript (Lv.4)

https://school.programmers.co.kr/learn/courses/30/lessons/64063 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 효율성이 중요한 문제였습니다. 📝 문제 풀이 1. 고객이 원하는 방 번호가 담긴 room_number 배열을 순회 2. 현재 방 번호를 assignedRoom 변수에 저장 ❌ 현재 방 번호를 배정할 수 없는 경우 3. assignedRoom이 map에 존재하지 않을 때까지 다음 방 번호를 assignedRoom 변수에 저장 4. assignedRoom이 map에 존재하지 않으면 임시 ..

[프로그래머스] 입국심사 C++ (Lv.3)

https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 이번 문제는 이분 탐색 문제였습니다. 📝 문제 풀이 1. 이분 탐색을 하기 위해 n명을 심사하는데 걸리는 최소 시간과 최대 시간 정의 (최소 시간: left_val, 최대 시간: right_val) 2. mid 시간 동안 심사 가능한 사람 수가 n명 보다 적으면 시간 범위를 늘림 ← left_val = mid + 1 3. mid 시간 동안 심사 가능한 사람 수가 ..

[프로그래머스] 거리두기 확인하기

https://programmers.co.kr/learn/courses/30/lessons/81302 코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr 이번 문제는 BFS 문제였습니다. 《문제 풀이》 1. places 배열의 각 행을 plac..

[프로그래머스] 점프와 순간 이동

https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 이번 문제는 Top-Bottom 문제였습니다. 《문제 풀이》 1. 처음 한 칸은 무조건 점프해야 하므로 ans 1 부터 시작 2. n을 2로 나누었을 때 나머지가 1이면 점프해야 한다는 의미이므로 ans++ 《C++ 코드》 #include using namespace std; int solution(int n) { int ans = 1; ..

[프로그래머스] 영어 끝말잇기

https://programmers.co.kr/learn/courses/30/lessons/12981 코딩테스트 연습 - 영어 끝말잇기 3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0] programmers.co.kr 이번 문제는 구현 문제였습니다. 단어의 중복을 피하기 위해 map 자료구조를 사용하면..

[프로그래머스] 프린터

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 이번 문제는 큐(Queue) 문제였습니다. 《문제 풀이》 1. 문서의 중요도와 각 문서의 인덱스를 큐 q에 삽입 2. 문서의 중요도를 판별하기 위해 우선순위 큐 pq에 문서의 중요도 삽입 3. 현재 문서의 중요도가 가장 높다면 인쇄 ← print++ ☛ 이 때, 현재 문서가 내가 요청한 문서의 대기 목록 위치라면 반복문 종료 ⭐️ (시간 초과 문제로 꼭 해주어야 해..

[프로그래머스] 괄호 변환

https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 이번 문제는 구현 문제였습니다. 《문제 풀이》 1. 문자열 p가 올바른 괄호 문자열이거나 빈 문자열이면 문자열 그대로 반환 2. 문자열 p가 올바른 괄호 문자열이 아니라면 (1) 문자열 p를 두 균형잡힌 괄호 문자열 u, v로 분리 ← cnt 변수 이용 (2) 문자열 u가 올바른 괄호 문자열이면 u + solution(v) 반환 • 문자열 u가 올바른 괄호 문자열..

[프로그래머스] 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 이번 문제는 해시 문제였습니다. 하지만.. 저는 해시를 사용하지 않고 풀었습니다. 😅 《문제 풀이》 1. phone_book을 사전 순으로 정렬 2. 현재 전화번호가 다른 전화번호의 접두어라면 answer = false 《C++ 코드》 #include #include #include using namespace std; bool solution(vector ..

반응형