
문제 링크입니다 : 알고리즘 유형 : walker - runner 관련 자료구조 : linked list 링크드 리스트가 주어졌을 때, 중간 지점의 값을 리턴하는 함수를 만들 때 사용한다. 간단하게 생각하면 리스트 전체를 한 번 순회해서 리스트의 길이를 알아낸 후, 그 절반만큼만 head에서부터 이동하면 중간 지점의 값을 얻을 수 있다. (이걸 two-path라고 한다.) 워커 러너 알고리즘은, 워커는 한번에 한 칸씩 이동시키고 러너는 한번에 두 칸씩 이동하도록 하기만 하면 된다. 이렇게 반복하다가 러너가 끝나면 워커는 중간에 있게 된다. 간단한 알고리즘이지만 이후에 복잡한 링크드 리스트를 다룰 때, 매우 유용하게 사용하게 되므로 반드시 알고 있어야 하는 개념이다. 문제 링크입니다 : https://le..

문제 링크입니다 : https://www.acmicpc.net/problem/2194 2194번: 유닛 이동시키기 첫째 줄에 다섯 개의 정수 N, M(1 ≤ N, M ≤ 500), A, B(1 ≤ A, B ≤ 10), K(0 ≤ K ≤ 100,000)가 주어진다. 다음 K개의 줄에는 장애물이 설치된 위치(행 번호, 열 번호)가 주어진다. 그 다음 줄에는 시작점의 위치와 도착점의 위치가 주어진다. 시작점의 위치와 도착점의 위치는 제일 왼쪽 제일 위의 한 점만 주어진다. 시작점의 위치와 도착점의 위치는 같지 않다. www.acmicpc.net 굉장히 이상한 문제였다. 첫 코드도 분명히 맞았는데 이상하게 계속 시간 초과가 떴다. 그리고 코드를 수정해보고 연산과정이 최대한 줄어들도록 논리 흐름을 재조정했다. 그..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/64062 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 모든 나니즈들은 강을 건널 때 모든 돌다리를 다 밟아야 한다. 즉, 한 명이 건널 때마다 모든 돌다리의 밟을 수 있는 횟수는 전부 1씩 감소하게 된다. 한 번에 나니즈들이 이동할 수 있는 간격은 K이다. 그러므로 나니즈가 몇 명 건넜을 때 돌다리 중에 K + 1 이상이 되는지 파악하면 된다. 하지만, 위의 내용대로 매번 배열의 값을 -1씩 갱신하는 코드를 작성하면 대략 200,000,000..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 구현문제였다. 문자열을 얼마나 잘 처리할 수 있느냐가 문제의 핵심이 이었던 것 같다. 대소문자 구분하지 않기 위해서 대소문자 변환처리를 우선 해주고, head부분, number부분, tail부분을 나누는 준다. 그리고 원래 파일명, 인덱스값과 같이 같이 저장해준다. 그리고 정렬한다. 이때, 정렬 기준은 문제에서 주언진 대로 적절하게 정해주면 간단히 됐었다. //https://programm..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 A부터 Z까지 map에 넣을 때, to_string('A') 이렇게 바로 넣었다. 그러니까 'A'를 "A"로 바꿔주는 게 아니라 65를 "65"로 바꿔서, 이걸 찾느라고 한참을 고생했다. 그리고 substr(시작 인덱스, 개수)인데 개수가 열린 구간인지 닫힌 구간인지 헷갈려서 고생했다. 거기에 map을 배열로 착각했는지... m [~~~~]식으로 탐색을 시도했다.... 피곤해서 그런..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음에 익숙한 듯하면서도 어떻게 접근해야 할지 몰라서 브루트 포스 방법으로 해보려고 했었다. 그런데 어떻게 구현해야할 지 잘 모르겠어서, 덮고 다음 날에 다시 시도했었다. 그러니, 뽑을 갯수만큼만 문자열을 완성해놓고, 게임을 하는 인원이 m으로 일정하니 m 간격으로 뽑기만 하면 된다는 걸 깨달았다. 그러고 다시 풀었는데.. 아이디어를 떠올리니 구현은 크게 어렵지 않았다. // https:/..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/17678 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 문제를 접했을 때.. 이게 뭐지 어떻게 풀어야 하지.. 라고 굉장히 막막한 기분이 들었다. 경우의 수가 너무 복잡해서 유용한 자료구조나 알고리즘이 잘 떠오르지 않았다. 그래서 일단 탐욕법으로 최대한 근접하게 답을 구할 수 있을 있는 방법을 시도하되, 경우의 수를 다 나눠서 처리하는 방법으로 했다. //https://programmers.co.kr/learn/courses/30/less..

문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 쉽게 풀 수 있는 문제여서 어렵지는 않았습니다. 다만, 비트 연산자를 많이 낯설다면 문제를 조금 더 어렵게 풀어야 됐을 거 같습니다. 비트 연산자를 사용해야 되는 것 이외에는 평이한 문제였습니다. // https://programmers.co.kr/learn/courses/30/lessons/17681 #include #include using namespace std; vector ..