• Image placeholder
  • 홈 페이지
  • 블로그 센터
  • 범주
Image placeholder

PROGRAMERS

Programers : 구명보트 (greedy)

같이 탈 수 있는 사람과 탔을 때, 가장 여유공간이 적게 남는 경우가 효율적! 해당 경우를 찾기 위해 이중 for문을 썼더니 효율성 검사에서 실패함 같은 결과를 내지만 정렬 후 head / tail로 접근을 하면 훨~씬 빠르다! (..이런게 알고리즘의 힘인가) 주의해야 할 점은 반드시 tail에 해당하는 사람은 태워야 한다는 것이다! -> 무게가 적은 사람들 끼리 있을 때 함께 탈 수 있는 ...

level2PROGRAMERSPROGRAMERS

Programers : 수식 최대화 -next_permutation()

key point! : 연산자의 종류 개수에 따라 가능한 조합을 구하는 것이 관건 <algorithm> 에 next_permutation()을 이용하면 현재 조합에서 다음 순열을 구할 수 있음! tmp배열에 [0, 1, 2, 3, 4] 가 있을 때 [0,1,2,3,4] ~ [4,3,2,1,0] 까지 모든 조합으로 바꾸어 준다 반환형은 bool형이기 때문에 조건으로 사용! prev_permut...

level2PROGRAMERSPROGRAMERS

Programers : 조이스틱 (greedy)

key point! 1) 조이스틱을 위/아래로 움직이는 것의 선택은 min을 이용해 해결 2) 조이스틱을 왼쪽/오른쪽 으로 움직이는 것의 선택은 먼저 'A'가 아닌 요소가 발견할 때 까지 찾기 --> 바꾼 name의 값을 'A'로 치환해주는 작업이 필요!...

level2PROGRAMERSPROGRAMERS

Programers : 주식 가격 (stack)

직관적인 풀이법 시간복잡도가 아슬아슬해 보인다 O(N^2) 보다 효율적이게 만드려다가 시간이 많이 소모되었다. (이럴 때에는 한번 해보는게 더 좋아보인다ㅠㅠ) 스택을 사용한 방법이 더 빠른 해결 방법! 값이 아닌 인덱스를 활용한 것이 key point!...

level2PROGRAMERSPROGRAMERS

rogramers : 단어 변환 - C++

백트래킹PROGRAMERSlevel3PROGRAMERS

rogramers : 여행 경로 - C++

깨달은 것 : vector<vector<string>>> ansList 자체를 오름차순으로 꺼내려면 sort(ansList.begin(), ansList.end()); 로하면 된다 (기본 sort에서 vector<string>에 대해 알아서 정렬 해줌)...

백트래킹PROGRAMERSlevel3PROGRAMERS

Programers : [3차] n진수 게임

어려워 보였지만 생각보다 쉬웠음! 10진법이 넘어갈 경우 알파벳으로 치환해야하는데 number 배열을 이용하는 좋은 방법을 배움!...

level2PROGRAMERSPROGRAMERS

Programers : 문자열 압축 (2020 KAKAO BLIND RECRUITMENT)

문자열이 n일때에 [ 1 ~ n/2개 ]의 단위로 자를 때 까지 개수를 구한 뒤 최소를 구해야 함 3중 for문으로 구조가 구성됨 1) slice for문 : 1 ~ n/2개 단위로 자르는 큰 틀 2) 비교 할 기준이 되는 문자 for문 3) 비교 할 대상이 되는 문자 for문 예외로 문자열이 1일 때 바로 return 처리를 해주어야 한다...

level2PROGRAMERSPROGRAMERS

Programers : 짝지어 제거하기

단순히 string에서 삭제하는 방식으로 하면 --> O(N^2) 효율성과 관련한 문제에 부딛히면 '자료구조'를 바꾸는 것을 생각해보기! 이전 값과 현재 값의 상관관계가 있는 경우 stack을 고려해보자!...

level2PROGRAMERSPROGRAMERS

Programers : 제일 작은 수 제거하기

<algorithm>의 find는 찾으면 해당 요소의 iterator를 반환 / 찾지 못하면 v.end()를 가리키게 된다! <algorithm>에 해당 stl에 min/max를 찾는 함수가 있다! 1) min_element() : 최소값에 해당하는 요소의 iterator를 반환 2) max_element() : 최대값에 해당하는 요소의 iterator를 반환...

level1PROGRAMERSPROGRAMERS

Programers : N개의 최소공배수 (GCD / LCM)

모든 수를 대상으로 최소 공배수를 구하려면 각 약수들의 최대 차수들의 곱이 필요하다고 생각했음 그래서 모든 수의 약수를 구했고, 최대 값들만 map에 저장하여 계산했음 밑에 풀이가 더 간단하고 똑똑한 풀이! key point! : 앞에 2개씩 차례차례 최소 공배수를 구하면 결국 모든 수의 최소공배수를 구할 수 있음 최대공약수를 구하는 GCD와 최소공배수를 구하는 LCM을 만드는 함수는 외워두...

level2PROGRAMERSPROGRAMERS

Programers : 최댓값과 최솟값 (sstream)

stringstream을 사용할 때 끝을 검사하기 위해 ss.eof()를 이용하면 된다 int 자료형으로 받을 때 음수도 잘 받아온다!...

level2PROGRAMERSPROGRAMERS

rogramers : 땅따먹기 - C++

문제 : N이 너무 커서 시간초과 key point! : DP의 핵심인 메모제이션(memoization)을 사용해야 한다...

level2DPPROGRAMERSDP

Programers : 다리를 지나는 트럭(queue)

key point! 1) queue가 가득찼을 때 pop() 과 push()가 하나의 cycle에 존재해야 한다. 2) pop() 다음에 push()를 해주는 순서가 중요! 3) queue의 size()로 pop여부를 확인하기 때문에 빈 값(0)을 넣어주어야 한다! 4) 마지막 모든 트럭이 queue에 올라갔을 때 bridge_length만큼 더하고 break!...

level2PROGRAMERSPROGRAMERS

Programers : 서울에서 김서방 찾기 (find)

string.find()은 문자열 내에 특정 문자열을 찾는 것이기 때문에 쓸 수 없다. <algorithm>에 있는 find()를 사용해서 문제를 해결 할 수 있다 원하는 문자열을 입력한 뒤 seoul.begin() 을 빼주면 인덱스를 구할 수 있다고 한다 (참조함)...

level1PROGRAMERSPROGRAMERS

© 2022 intrepidgeeks.com

Privacy Policy Contact US Sitemap
🍪 This website uses cookies to ensure you get the best experience on our website. Learn more