본문 바로가기
반응형

알고리즘/프로그래머스3

[프로그래머스 위클리챌린지 9주차] 전력망을 둘로 나누기(C++) 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 처음에는 좀 막막했는데 금방 풀이를 떠올릴 수 있었다. 간선의 개수가 최대 100개밖에 되지 않아서 모든 경우를 다 탐색해보고 가장 차이가 적게 나는 경우를 찾아주었다. 처음에 인접 그래프를 떠올리고 초기화하는데 크기를 wires.size()로 입력해버려서 자꾸 Segmentation fault가 발생했다. 송전탑은 1번부터 시작하므로 wires.size() 크기로 벡터를 선언하는경우 n번째 송전탑의 그래프를 저장할 때 에러가 발생한다. 인접그래프를 만들고 난 뒤에는 bfs로 간단하게 순회가 가능하다. 차이가 음수일 수 있으니 abs()를 이용해 절댓값을 얻어주었다. 만약 송전탑 개수의 차이가 0또는 1이면 .. 2021. 10. 7.
[프로그래머스 고득점Kit] 전화번호목록(해시) - c++ 접근 처음에 문제를 보고 길이순으로 정렬한 다음에 비교하면 되겠다 라고 생각하고 코드를 짰다. 길이가 같으면 서로 같은 문자열은 없으므로 비교할 필요가 없으니 continue를 해주면 효율성을 충분히 고려하는거라고 생각했는데 정확성은 다 통과하지만 효율성 3, 4번을 통과하지 못했다. 오답코드 #include #include #include using namespace std; bool compare(string a, string b){ if(a.size()==b.size()){ return false; } else { return a.size() 2021. 9. 18.
[프로그래머스 고득점Kit] 위장(해시) - Javascript 실제 조합을 일일히 구해서 계산하면 아마 통과하지 못할것이다. 처음에 조합으로 풀고 제출했더니 테케 1번이 오답이 떴고 질문하기를 가보니까 나같은 사람들이 우글대고있었다. 찾아보니까 훨씬 더 간단하게 해결할 수 있는 방법이 있었다. function solution(clothes) { var type = new Map(); var arr = []; var i=0; clothes.map((value, idx) => { if(type.get(value[1])===undefined){ arr[i]=2; type.set(value[1], i++) } else { arr[type.get(value[1])]+=1; } }) var answer = 1; arr.map(value => { answer*=value; }).. 2021. 9. 16.
반응형