본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

[정렬, 난이도 중] 프로그래머즈, 가장 큰 수 정렬 방식을 찾기에 쉬운 문제는 아니었다. 문자열을 그대로 내림차 순으로 정렬 한다면 예제 2에서는 30이 3보다 앞에 오게 된다. 303 2020. 9. 10.
[그리디, 난이도 중] 프로그래머즈, 단속카메라 이 문제 같은 경우에는 차량들의 진출 지점을 기준으로 오름차순으로 정렬해야 한다. 그리고 최근에 설치한 카메라의 지점을 기록하는 변수(recent_camera) 가 필요하다. 입출력 예 정렬 전 정렬 후 첫 차량(정렬 후)의 진출 지점에 카메라를 설치한다. (recent_camera=-13, answer=1) 두 번째 차량의 진입 지점은 recent_camera의 이전이므로 카메라를 설치할 필요가 없다. (recent_camera=-13) 세 번째 차량의 진입 지점은 recent_camera의 이후이므로 진출 지점에 카메라를 설치한다. (recent_camera=-3) 네 번째 차량의 진입 지점은 recent_camera의 이전이므로 카메라를 설치할 필요가 없다. (recent_camera=-3) 이렇게.. 2020. 9. 10.
[정렬, 난이도 하] 프로그래머즈, K번째수 (벡터 복사) 기초적인 정렬문제이다. 구간을 잡고 정렬해서, 그 구간내에서 원하는 인덱스값을 추출하면 된다. 그런데 테스트케이스가 여러개이기 때문에 벡터를 테스트케이스마다 초기화해줘야 한다. 본인 같은 경우에는 구간을 잡을 때, 구간을 잘라서 다른 벡터에 따로 할당시켰다. 벡터를 할당하는 함수의 사용법이다. 할당받을 대상인 벡터를 V1이라고 하고 할당할 값들이 있는 벡터를 V2라고 한다면 V1.assign(V2.begin()+firstindex, V2.begin()+lastindex+1) 만약 V2벡터의 1번째 인덱스부터 4번째 인덱스까지 복사하여 V1벡터에 붙여넣고 싶다면 V1.assign(V2.begin()+1, V2.begin()+5) 로 작성한다. (2번째 인자 값의 이전까지만 포함) 통째로 복사하고싶다면 V1.. 2020. 9. 10.
[스택/큐, 난이도 중하] 프로그래머즈, 프린터 문제의 조건을 보고 스택,큐중 어느 것을 요구하는지 파악해보자. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. '앞', '마지막' 이라는 단어가 나오는 것을 보아 큐 문제임을 알 수 있다. 그리고 둘 이상의 문서끼리 중요도가 같을 수 있고, 문서의 인덱스까지 신경써줘야 하는 문제이다. 그래서 큐에 문서의 중요도, 인덱스 두 정보를 pair을 이용해 정리했다. 문서는 최대 100개 있고, 중요도는 1~9의 정수로 표현할 수 있다. J보다 중요도가 높은 문서를 찾기 위해 큐에 있는 모든 요소를 확인하는 것 보다는, 중요도별로 .. 2020. 9. 9.
[동적계획법, 난이도 중상] 프로그래머즈, 도둑질 Programmers의 문제들은 난이도별로 다섯 레벨로 나뉘는데, 그 중 Level 4에 속하는 난이도 있는 문제이다. 그래도 백준에서 DP를 50문제 넘게 푼 짬이 있어서 그런지 크게 어렵지는 않았다. 집이 일렬로 있는게 아니라 원형으로 배치 되어있기 때문에 접근법을 좀 다르게 생각해줘야 한다. 결론부터 말하자면 3가지 경우에 대해 DP를 수행하여 이들 중 최댓값을 구하면 된다. 3가지 경우는 이렇다. 0번째 집부터 터는 경우 1번째 집부터 터는 경우 2번째 집부터 터는 경우 3번째 집부터 터는 경우는 1번째 집을 털 수 있는 상황인데도 털지 않는 경우이므로 최대값이 나올 일이 없다. 케이스별로 DP수행 직전 상황을 그림으로 간략하게 표현하였는데, 회색은 털 수 없는 집이다. 1. 0번째 집부터 터는 .. 2020. 9. 8.
Hash 고득점 kit 풀이 완료, 후기 Programmers 의 Hash 고득점 kit를 모두 풀이 하여 포스팅 해보았다. Hash 함수의 정의는 입력 메시지를 고정된 길이의 출력값으로 압축 시키는 함수이다. (출처-국방과학기술용어사전) 포스팅한 Hash 문제들의 소스코드를 봤듯이, 입력된 문자열을 간단한 정수 출력값으로 변환 시켰다. 정렬같은 경우처럼 문자열들에 대한 계산이 필요할 때, 문자열을 계산할 때마다 각 문자들까지 처리해주는 것보단, 사전에 이 문자열을 나타내는 값 하나로 압축해두는 것이, 이후 계산 시 시간복잡도를 줄이는데에 매우 효과적인 것을 느꼈다. 해시를 이용할 때 주의할 점이 있다. 서로 다른 문자열인데도 해시값이 같을 때, 심각한 리스크가 생길 수 있다. 이를 방지하기 위해서 해시값이 같을 때에는 직접 두 입력값을 2차적.. 2020. 9. 8.
[Hash, 난이도 중상] 프로그래머즈, 베스트앨범 이 문제에서는 문자열을 해쉬 값으로 바꿀 수 있어야 하고, 3중 정렬을 해야 한다. 정렬이 조금 까다로운 점 외에는 특별한 수학적 논리력은 요구되지 않는다. 아마 여러 요소를 가지는 벡터의 정렬에 익숙하다면 이 문제는 간단히 풀 수 있을 것이다. main문 위에 있는 compare, compare2 에 대해서 설명 하겠다. 둘다 비교함수이다. compare 같은 장르끼리는 벡터 안에서 서로 인접하게 한다. (장르 구별은 해시값으로 한다.) 같은 장르 안에서는 앨범이 조회수가 높은 순으로 정렬 시킨다. 조회수가 같다면 고유번호가 낮은 순으로 정렬 시킨다. 이렇게 3중 정렬만 해줘도 나중에 처리가 쉬워진다. compare2 장르의 총 조회수가 높은 순으로 정렬 시킨다. 이렇게 2중 정렬을 해주면 장르의 총 .. 2020. 9. 8.
[Hash, 난이도 중] 프로그래머즈, 위장 이 문제는 해쉬를 이용할 수 있어야 하며, 수학적이면서 논리적인 접근이 약간 필요하다. 2차원 문자열 벡터 clothes에서 각 행은 [의상의 이름, 의상의 종류]가 들어있는데 우리는 의상의 이름에는 관심을 가지지 않고, 종류별로 의상이 몇개있는지만 알아내면 간단한 수식을 통해 문제를 해결할 수 있다. 만약 스파이가 아래와 같은 의상들을 가지고 있다고 가정해보자. 같은 종류 안에서도 서로 다른 이름을 가지고 있다. 안경 - 2개 마스크 - 1개 코트 - 3개 바지 - 1개 여기서 스파이는 하나 이상의 의상을 입고 있어야 하며, 매번 의상을 한 부위라도 다르게 입고 있어야 한다. 충격적이게도, 스파이는 안경만 끼고 옷을 홀딱 다 벗고 있어도 된다는 것이다. 이정도 또라이면 스파이인걸 눈치 못채는게 이상하다.. 2020. 9. 7.
Programmers 스킬 체크 레벨3 합격! 보통의 기업 코딩 테스트를 진행하기에 무리가 없다고 하니, 높은 수준의 문제를 내는 기업 코딩 테스트를 진행하기에도 무리가 없을 실력으로 올려야겠다. 2020. 9. 4.