일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SQL
- 백준
- 오블완
- JavaScript
- Spring Framework
- programmers
- 자바의 정석(기초편)
- 알고리즘
- Java script
- Java
- 영어원서
- BFS
- Computer Science
- MySQL
- 소프티어
- Steve Jobs
- 티스토리챌린지
- java.lang 패키지
- 프로그래머스
- 반복문
- Spring
- 해시
- StringTokenizer
- nextInt
- softeer
- Programming
- Python
- 관계형 데이터베이스
- 코딩테스트
- thinking differently
- Today
- Total
목록Python (8)
도라에몽 개발자

기본적인 Java와 Python 문법을 복습할겸 프로그래머스의 Lv.1 문제를 풀어보았다. 문제 내용은 다음과 같다. [Java 풀이]if문과 나머지 연산자(%)를 활용하여 홀수, 짝수 여부를 확인하고자 하였다.class Solution { public String solution(int num) { String answer = ""; if (num % 2 == 0) { answer = "Even"; } else { answer = "Odd"; } return answer; }} 아래와 같이 삼항연산자를 활용하면 6줄이었던 코드를 단 1줄로 표현할 수 있다.clas..

문제 풀이1 - 정확성 테스트 성공- 효율성 테스트 실패def solution(scoville, K): cnt = 0 for n in range(len(scoville)): scoville.sort() if scoville[0] >= K: break elif len(scoville) 정렬 후 if 문을 통해 섞은 횟수를 구하고자 하였으나, 효율성 테스트에서 실패했다.이를 보완하기 위해, 알고리즘 테스트 주제를 참고하여 힙(heap) 기능을 활용한 코드로 재시도하여 성공했다. 풀이2import heapqdef solution(scoville, K): # heap 구조 사용 heapq...

문제 풀이 처음에는 문자의 첫번째 자리수를 기준으로 정렬하려고 했고, 이는 이후 자리수를 반영하지 못하여 옳지 않은 정렬 순서가 출력됨을 인지하였다. 이후 반복문과 변수를 선언하여 문자열을 slicing 해보기, sorted(reverse=True) 사용해보기 등등 여러 방법을 활용해봤지만 코드가 복잡하고 잦은 데이터 변경과 새로운 저장을 해야 하는 문제점이 있었다. 제한사항에 매개변수로 주어지는 숫자의 크기는 1000 이하라고 명시되어 있으므로, 세자리수로 모두 변환하여 문자열로 비교하면 사전순으로 정렬되므로 첫번째 글자가 가장 작은 수, 그리고 이후 자리수들을 비교하여 오름차순 정렬됨을 알게 되었다. 예를 들어, 3, 30, 5 를 비교하려면 - 333- 303030- 555 를 비교하게 되는데, 세..

문제 설명 문제 풀이from collections import Counterdef solution(participant, completion): p_dict = Counter(participant) c_dict = Counter(completion) for person in p_dict: if p_dict[person] != c_dict[person]: return person ▶ 참가자 목록과 완주자 목록 리스트를 각각 Counter로 변환하여, 각 key - value 값 비교하는 방법으로 풀어냄. 다른 사람 풀이 참고한 내용import collectionsdef solution(participant, completion): # collec..

문제 1st. 파이썬 코드def solution(array, commands): answer = [] for n in range(len(commands)): i = commands[n][0] j = commands[n][1] k = commands[n][2] answer.append(sorted(array[i-1:j])[k-1]) return answer 2nd. 파이썬 코드 i, j, k를 굳이 각각 초기화하지 않고, 한꺼번에 선언 및 초기화하는 것으로 수정def solution(array, commands): answer = [] for command in commands: i..

문제 접근 방식 Queue (큐) 개념을 생각하여 접근함. - 이전 작업이 끝나지 않으면, 다음 작업이 먼저 끝나더라도 이전 작업이 끝날 때까지 대기해야 함. - 끝나지 않은 이전 작업의 소요일을 기준으로 다음 작업들의 소요일을 비교함. 1. 잔여 업무량 확인(remain_work)2. 각 업무별 소요일 확인(days)3. 이전 및 다음 업무별 소요일을 비교하여 배포되는 기능 개수 count- 이전 업무 소요일(cur)이 다음 업무 소요일(next)과 동일하거나 더 오래 걸리는 경우, 배포할 기능 개수(cnt) 1 증가- 다음 업무 소요일(next)이 이전 업무 소요일(cur) 보다 더 오래 걸리는 경우, 배포할 기능 개수(cnt)를 결과 리스트인 answer에 저장4. 최종 카운팅 된 배포 기능 개..

접근 방법 1. 리스트 중복제거- 중복을 허용하지 않는 자료구조 set의 특성을 활용하여 리스트 내 중복을 제거함. 2. 최대로 가져갈 수 있는 폰켓몬 종류의 수(max_num)와 전체 폰켓몬 종류 수(type_num)를 비교- max_num >= type_num 인 경우, max_num 으로 반환- max_num 파이썬 코드def solution(nums): max_num = len(nums) // 2 # 선택 가능한 폰켓몬 종류의 최대값 type_num = len(set(nums)) # 중복 제거된 폰켓몬 종류의 개수 if type_num >= max_num: # 폰켓몬 총 종류 개수가 최대값보다 큰 경우 return max_num # 폰켓몬 종류 개수의 최..

1. DFS (Depth-First Search; 깊이 우선 탐색)- Stack 활용하여 구현 - 최대한 깊이 내려간 후에 더이상 내려갈 노드가 없는 경우 다시 올라와서 우측으로 이동하고, 다시 내려가면서 탐색함. - 상위 노드의 Child, 해당 Child의 Child, ... 반복하여 오르락 내리락 하면서 탐색함.- 모든 노드를 방문하려는 경우에 활용하는 편 2. BFS (Breadth-First Search; 너비 우선 탐색)- Queue 활용하여 구현 - 최대한 넓게 이동하여 해당 줄의 노드 모두 탐색 끝났으면, 다음 줄의 노드로 탐색하러 내려감. - 상위 노드 전체 탐색 후, 하위 Child 노드 탐색하고, 또 내려가서 그 하위 Child 노드 탐색함.- 다시 올라오지 않고 인접한 node들 먼..