일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- prettier
- react
- 가장큰수
- expected linebreaks to be 'crlf' but found 'lf' linebreak-style
- lazy-load
- git 개행문자
- git
- REST API
- 퀵정렬
- 원시값
- JadenCase
- git 명령어
- 프로그래머스
- expected linebreaks to be 'lf' but found 'crlf' linebreak-style
- 응답코드
- IP주소
- vscode
- input type password
- CRLF
- eslint
- password 안보임
- 개행문자
- HTTPS
- eslint-prettier
- LF
- git autocrlf
- input 안보임
- CRA
- k번째수
- 참조타입
- Today
- Total
목록development/알고리즘 (25)
우파루파의 개발 기록
안녕하세요. 이번 문제는 프로그래머스의 120812번 입니다. 최빈값을 구하는 문제입니다. 문제 코드 def solution(array): d=dict() r=[] for i in range(len(array)): v = array[i] if v in d: d[v] = d[v] + 1 else: d[v] = 1 if len(r) > 0: if v in r or d[r[len(r)-1]] 1 else r[len(r)-1] 알고리즘 캔버스 아이디어 각 값마다의 빈도를 저장하는 dict(이하 d)와 현재 최빈값을 저장하는 ar..
안녕하세요. 이번 문제는 백준의 11047번 입니다. 그리디 알고리즘을 사용해 푸는 문제입니다. 저는 요즘 푸는 문제들은 `알고리즘 디자인 캔버스(이하 캔버스)`를 제게 더욱 잘 맞게 수정해서, 템플릿화 시켜서 사용하고 있습니다. 그래서 해당 문제도 캔버스에 적어가며 풀었습니다. 문제 정리에 도움이 되는 것 같습니다. 참고로 그리디 알고리즘이란 매 상황에서의 가장 좋은 선택지를 고르는 알고리즘입니다. 그래서 특정 조건을 충족하지 않으면 일반적으로 최적의 해가 되기는 어렵습니다. 최적 값의 '근사값'이 목표입니다. 다음이 문제입니다. 실버 4 단계네요. 문제 코드 n, k = map(int, input().split()) n_l = list(map(int, [input() for i in range(n)]..
안녕하세요. 이번 문제는 프로그래머스 2단계 - JadenCase 문자열 만들기 입니다. 정답률 81%의 쉬운 문제입니다. Jaden case라는 말을 이번 문제를 풀이하면서 처음 접해봤습니다. 견문을 넓힌 것 같아 기분이 좋습니다. 덤으로 이번 문제는 풀이 했더니 11점을 주더라구요. 아주 기분이 좋습니다. function solution(s) { let newWord = true; let result = ""; for (let i = 0; i < s.length; i ++) { const word = s[i]; if (word === " ") { result += word; newWord = true; } else { if (!isNaN(Number(word))) { result += word; } ..
안녕하세요. 이번 문제는 프로그래머스 2단계 - 가장 큰 수 입니다. 이번 문제는 빠른 정렬 알고리즘 중 하나인 퀵 소트를 사용해 풀어보려고 노력 했습니다. 이번 문제는 정렬 자체를 구현(In-place 방식은 아니지만..)하는 것은 쉬웠지만, 비교 식을 어떤식으로 잡아야 할 지에서 고민을 많이 했습니다. 풀이 후, 13점이라는 점수를 받아 기분이 좋았습니다. function quickSort(origin) { if (origin.length < 2) { return origin; } const left = []; const right = []; const [pivot] = origin; for (let i=1; i String(data) || "0")); if (answer[0] == '0') retu..
안녕하세요. 이번 문제는 프로그래머스 1단계 - K번째 수 입니다. 이번 문제는 정렬 카테고리의 문제여서, 정렬을 직접 구현하는 것에 의의를 두었습니다. 당장 아는 정렬 알고리즘이 선택 정렬, 버블 정렬, 삽입 정렬 등의 기본 알고리즘뿐이고, 데이터의 양이 적기 때문에 아는 알고리즘 내에서 풀어보았습니다. 제가 풀이한 정답입니다. 정렬 함수는 가독성을 위해 분리했습니다. function selectionSort(answer, max) { for (let i = 0; i answer[j]) { ..
안녕하세요. 이번 문제는 프로그래머스 2단계 - 위장 입니다. 이번 문제도 저번 글과 마찬가지로 해시 테이블을 사용해 해결해야 하는 문제입니다. 추가적으로 수학 공식이 필요해서, 수학 공식을 열심히 서치해서 풀었습니다. 문제가 조금 이상하다고 생각합니다. 이게.. 아무리 위장이라지만.. 상의와 바지는 필수로 입어야 하지 않을까요? 모든 옷 종류 중 한가지만 입어도 된다는게 조금 의아했습니다. 코트만 입고 다니면 바로 바바리맨 확정입니다. 우리는 모두 적절한 위장을 위해서 상의와 하의는 꼭 입는게 좋을 것 같습니다. 하지만 일단 문제가 요구하는 바를 따른 정답은 다음과 같습니다. function solution(clothes) { const hash = new Map(); for (let i=0; i
안녕하세요. 이번 문제는 프로그래머스 2단계 - 전화번호 목록입니다. 프로그래머스에서 처음으로 풀어보는 2단계 문제였습니다. 확실히 1단계 문제와는 난이도가 올라간 것이 느껴졌습니다. 설상가상 JS는 지원하지 않는 문제라서.. Python으로 풀이하였습니다. 해당 문제의 경우, 아마도 비교적 최곤에 테스트케이스가 상세하게 추가되고 효율성 검사가 더 어려워졌다고 하더라구요. 그래서 그런지 다 풀고 난 이후에 더 좋은 풀이가 있다면 참고하고자 했으나, 문제 수정 이전에 올라간 정답들이라 효율성 테스트에서 탈락하거나 테스트케이스를 통과하지 못하는 것들이 있더라구요. 이 부분은 조금 아쉬웠습니다. 이번 문제는 얼핏 보면 중첩 for문을 사용해 쉽게 풀 수 있을 것 같습니다만.. 효율성 부분에서 O(n^2)는 통..
안녕하세요. 이번 문제는 프로그래머스 1단계 - 폰켓몬 문제입니다. 이번 문제는 가장 처음 읽었을 땐 무슨 말인지 이해가 잘 되지 않아 헷갈렸지만, 제대로 읽어보니 정말 쉬운 문제여서 후루룩 풀었습니다. function solution(nums) { return Math.min(nums.length / 2, new Set(nums).size); } 인생은 폼생폼사이기 때문에 한줄로 짜보았습니다. Set이 아닌 Map을 사용하는 방법도 있습니다. function solution(nums) { return Math.min(nums.length / 2, new Map(nums.map((val) => [val])).size); } 이번 문제는 거의 다 답들이 비슷한 수준이어서 다른 풀이를 가져오지 않았습니다. ..