🤜 코테

하고싶은 거 다하며 살자
백준 1476번 : 날짜 계산 파이썬
문제보고 뭐지? 수학문젠가 하고 당황했는데, 브루트 포스 였다. 말그대로 완전탐색으로 일일이 하나씩 대조해가보면서 풀면 됨. 인터넷에 보니 더 수학적 접근이 가미된 풀이방식이 있었다. 하지만 사실 그런 공식을 생각해내지 못한다하더라도 하나하나씩 해보는 완전탐색으로 충분히 풀 수 있다. 나는 초보자인지라 일단 두가지 방식을 모두 공부해야겠다고 생각했다. 첫번째 방법 - while 문이 참일 때 동안 e,s,m,year 모두 1씩 더한다. - 목표값과 동일하면 해당 year를 출력하고 break로 빠져나온다. E, S, M = map(int, input().split()) e,s,m = 1,1,1 year = 1 while True : if e == E and s == S and m == M : print(..
이진 탐색 (Binary Search)
순차 탐색 (Sequential Search) : 리스트 안에 특정한 데이터를 찾기 위해, 앞에서부터 데이터를 하나씩 차례대로 확인하는 탐색방법 리스트레 해당하는 데이터가 존재하는지 탐색하는데 자주 사용된다. 시간복잡도 : 데이터가 N개일 때 N번의 비교연산이 필요하므로 O(N) 이진 탐색 (Binary Search) : 이진 탐색은 정렬되어있는 리스트내에서 탐색 범위를 반으로 쪼개가며 탐색하는 방법이다. 시작점, 끝점, 중간점 변수 3개를 이용해 탐색한다. 이진탐색을 구현하는 방법에는 2가지가 있다. 재귀함수를 사용하는 것과, 반복문을 사용하는 방법이다. * 이진 탐색 문제는 탐색 범위가 큰 상황에서의 탐색을 가정하는 문제가 많다, 범위가 2000만을 넘는다면 이진 탐색으로 풀어보자. 처리해야 할 데이..
정렬 (sort)
선택 정렬 (Selection sort) : (오름차순 기준)매번 가장 작은 것을 선택하여 앞으로 보내는 과정을 반복 수행하여 정렬하는 것 삽입 정렬 (Insertion sort) : 특정 데이터를 적절한 위치에 삽입하는 정렬. 특정 데이터가 적절한 위치에 들어가기 이전에, 그 앞에 있는 데이터는 정렬이 되어있다고 가정한다. 정렬된 데이터 리스트에서 적절한 위치를 찾고 그 위치에 삽입된다. 시간복잡도 : O(N^2) 퀵 정렬 (Quick sort) : 선택, 삽입 정렬보다 빠른 정렬 알고리즘. 기준점인 피벗을 설정하고 이를 기준으로 큰 수와 작은 수의 위치를 바꾼다. 대표적인 분할 방식인 호어 분할 (Hoare Partition)방식에서는 '리스트에서 첫번째 데이터를 피벗으로 정한다.'는 규칙이 있다. ..
파이썬 리스트(배열)을 문자열로 변환하기
파이썬의 String 클래스에서는 join 메서드를 제공한다. join 메서드를 이용하면 리스트를 이루고 있는 요소들을 문자열 형태로 출력해준다. list = ['h','e','l','l','o'] print(''.join(list)) # hello print(' '.join(list)) # h e l l o print('-'.join(list)) # h-e-l-l-o join메서드 앞에 있는 문자,문자열을 이용해 리스트의 요소들을 구분하고 하나의 문자열로 합쳐주는 메서드다. 만일 리스트에 문자열이 아닌 다른 타입이 있으면 에러가 발생한다.
탐색 알고리즘 DFS / BFS
알고리즘 파트는 책 "이것이 취업을 위한 코딩테스트다 -나동빈" 책을 기반으로 제가 이해한부분을 정리하기 위해 작성되었습니다 . 그래프 구조 - 노드(Node)와 노드를 연결한 간선(Edge)을 모아놓은 자료구조. 노드는 vertex라고도 부른다. - '노드가 인접하다' 라는 것은 두 노드가 간선으로 연결되어 있다라는 의미 - 그래프 탐색은 하나의 노드를 시작으로 다수의 노드를 방문하는 것 그래프 구현 방법 그래프를 구현하는 방법에는 인접행렬(Adjacency Materix)와 인접리스트(Adjacency List)방식이 있다. 두개의 구현 방식은 각각의 상반된 장단점을 가지고 있는데 대부분 인접리스트 형식을 많이들 사용한다. 1. 인접행렬 (Adjacency Matrix) : 2차원 배열에 각 노드가 ..
스택, 큐, 재귀함수
알고리즘 파트는 책 "이것이 취업을 위한 코딩테스트다 -나동빈" 책을 기반으로 제가 이해한부분을 정리하기 위해 작성되었습니다 . 탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS가 있다. 이 둘을 이해하기에 앞서 먼저 알아야 할 기보 자료구조부터 알아보자. (자료구조 : 데이터를 표현하고 관리하고 처리하기 위한 구조) - 삽입 : push - 삭제 : pop - Overflow : 특정 자료구조가 수용할 수 있는 데이터 크기를 이미 가득 찬 상태에서 삽입 연산을 수행할 때 - Underflow : 특정 자료구조에 데이터가 전혀 들어있지 않는데 삭제 연산을..
구현 (Implementation)
알고리즘 파트는 책 "이것이 취업을 위한 코딩테스트다 -나동빈" 책을 기반으로 제가 이해한부분을 정리하기 위해 작성되었습니다 . 구현 코테에서 구현이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정'이다. 즉 어떤 문제든 소스코드를 작성하는 과정은 필수이므로 모든 문제가 구현 문제라고 볼 수 있다. 코딩 테스트에서는 시뮬레이션, 구현, 완전탐색 유형 등 서로 다르게 일컫는다. 완전탐색 일명 브루트포스(brute force) 라고 불리는 방법으로 가능한 모든 경우의 수를 주저 없이 다 계산하여 해결하는 방법이다. 완전 탐색의 시간복잡도는 주로 O(N!), O(2^N)이다. 완전 탐색은 반복문을 이용하는 방법, 재귀 함수를 이용하는 방법이 있는데 보편적으로 사용되는 것은 재귀 함수라고 한다. 반복문의 경..
이코데 그리디 문제
숫자 카드 게임 import java.util.*; public class Main { public static void main(String[]args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int result = 0; for (int i = 0 ; i < n ; i ++) { int min_value = 10001; for ( int j=0 ; j < m ; j++) { int x = sc.nextInt(); //현재 줄에서 가장 작은 수 찾기 min_value = Math.min(min_value, x); } //가장 작은 수 중에서 큰 수 찾기 result = Math.max(result,..
wnwlals13
'🤜 코테' 카테고리의 글 목록 (3 Page)