1. 문제 programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 2. 소스코드 (Python3) def solution(n, lost, reserve): answer = 0 student = {} for x in lost: student[x] = student.get(x, 1) -1 for x in reserve: student[x] = student.get(x, 1) +1 lost = [k for k,v in student.it..
1. 문제 programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 2. 소스코드 (Python3) def solution(participant, completion): hash = {} for p in participant: hash[p] = hash.get(p, 0) + 1 for c in completion: hash[c] -= 1 ans = [k for k, v in hash.items() if v > 0..

1. 문제 2. 소스코드 (Python3) def solution(s): # wordlen=len(s)이면 압축문자열 길이 = len(s) answer = len(s) for wordlen in range(1, len(s)-1): #문자길이가 1~len(s)-1까지 반복. wordcnt = len(s)//wordlen #문자뭉텅이 개수 = 전체문자열길이에서 문자길이 나눈 몫 comp = False #False=압축x, True=압축o compcnt = 0 #압축되는 문자뭉텅이 개수 compstr = '' #압축된 문자열 ## j번째 문자뭉텅이 처리 for j in range(wordcnt): word1 = s[j*wordlen: (j+1)*wordlen] word2 = s[(j+1)*wordlen: (j..
1. 문제 programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 2. 소스코드 (Python3) def solution(citations): citations = sorted(citations) l = len(citations) for i in range(l): if citations[i] >= l-i: return l-i return 0 3. 고찰 1) 알고리즘 citations를 오름차순 정렬..

1. 문제 2. 소스코드 def solution(citations): h=len(citations) while h: higher = 0 lower = 0 for c in citations: if c>=h: higher += 1 else: lower += 1 if higher>=h and: return h h-=1 return h 3. 고찰 1) 알고리즘 n편 중 h편이기 때문에 h의 초기값을 len(citations)로 설정했다. 최대값을 찾는 문제이므로 위에서부터 내려가며 h값을 찾았다. while loop를 돌면서 h번 이상 인용된 논문 개수는 higher에, 나머지 논문 개수는 lower에 세었다. higher개수가 h편 이상이면 h를 리턴하였다. h에 -1 해주었다. 2) 시간복잡도 입력 리스트 ..

1. 문제 2. 소스코드 cntlist = [1000000000] #이름을 완성했을 때 횟수를 저장하는 배열 ## 'A'부터 올려가며/내려가며 문자로의 조작횟수 비교, 작은 것 선택 def count(name, idx): return min(ord(name[idx])-ord('A'), ord('Z')-ord(name[idx])+1) ## 조이스틱 def Joystick(name, naming, idx, cnt, rlcnt, rl): if rlcnt == len(name): return # 좌우 조작횟수가 이름의 길이가 되면 불필요한 좌우이동 -> 리턴 if cnt >= min(cntlist): return # 현재 cnt보다 적은 횟수로 이름을 완성할 수 있다면 이후 계산이 불필요 -> 리턴 if nam..

1. 문제 2. 소스코드 def solution(numbers): answer = set() for i in range(len(numbers)): for j in range(i+1,len(numbers)): answer.add(numbers[i] + numbers[j]) answer = list(answer) answer.sort() return answer 3. 고찰 1) 알고리즘 인덱스를 이용해서 두 수를 뽑았다. 더한 수를 answer에 넣었는데, answer는 set을 사용하였다. set은 list와 다르게 중복 원소는 한 개만 저장하는 특징이 있다. 하지만 sort를 할 수 없어서 answer를 다시 list로 변경한 후 오름차순으로 정렬하였다. 2) 시간복잡도 이중 for문을 사용하기 때문에 ..
- Total
- Today
- Yesterday
- 리눅스
- 우분투
- ROS
- 윈도우
- 초음파센서
- python3
- 백준알고리즘
- C++
- Ubuntu20.04
- subscriber
- 윈도우 복구
- VirtualBox
- vue/cli
- umount
- HC-SR04
- filesystem
- 프로그래머스
- roslaunch
- 8자주행
- 포트인식문제
- Ubuntu16.04
- 아두이노 IDE
- 코드리뷰
- Publisher
- 원격 통신
- VMware
- sensehat
- set backspace
- Mount
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |