전체 글 42

Sorting Algorithm (정렬 알고리즘) 개요.

원소들을 특정 순서나 기준에 맞게 정렬하게끔 하는 알고리즘에는 다양한 방법이 있다.  Input 데이터로 등 n개의 데이터가 주어지게 되면, Output 데이터로  정렬 기준에 맞는 순열을 return 하게 된다.  이 정렬 알고리즘을 사용하게 되면 간편해지는 것들이 많은데 1) 특정 값을 리스트에서 검색하는 것이 빨라진다. 2) 최소/최대값 찾기에 용이해진다. 3) 중복값 찾기나 유니크한 값 찾기에 유용해진다. 4) 날짜별로 상태, 거래 등을 정렬하기 용이하다.  등등 다양한 장점들이 존재합니다..  그렇다면, 정렬 알고리즘에는 어떤 종류가 있는가 제가 들었던 수업에서는 크게 2가지 구분 방식이 있었습니다 . 1) 비교 정렬 vs 비 비교 정렬 비교 정렬 : 버블 정렬, 선택 정렬, 삽입 정렬 , 병..

알고리즘 2025.01.16

백준 2675번 문자열 반복 (파이썬)

이 문제는 문제 이해에서 애를 먹었습니다... 문제를 제대로 읽지 않고, 부분에서 첫 번째 줄을 보고선 "숫자 다음에 문자열이 오는데, 숫자 다음 공백이 오면 아무것도 출력이 안되게 하는건가 보구나"라고 이해를 했네요.. a = int(input()) for i in range(a): b, c = input().split() for i in range(len(c)): print(int(b) * c[i], end ='' ) print('') 제가 푼 방법은 이렇습니다. 1. 테스트 케이스 개수를 받아, 변수 a에 저장합니다. 2. 테스트케이스 개수만큼 반복합니다. 2-1: 입력을 받아서 공백을 기준으로 b,c에 나누어 저장합니다. 3. 중첩 반복문 부분입니다. 문자열 길이만큼 반복하고, 문자열 각각에 대해..

파이썬 2024.03.08

백준 2577번 숫자의 개수 (파이썬)

문제를 먼저 이해해보면 1. 숫자 3개를 입력받습니다. 2. 각 숫자를 곱하고 결과값에서 사용된 수 (0~9)의 개수를 한 줄씩 출력합니다. A = int(input()) B = int(input()) C = int(input()) num= A*B*C digit_list = [i for i in str(num)] i = 0 while(i3->1->3을 가져옵니다. 그리고 그 i 값을 리스트 요소로 추가합니다. 4. 마지막으로 list에 저장된 요소를 순회하며 리스트에 있는 값을 찾아 카운트합니다. ex) i=0 의 순서에서 count = digit_list.count(str(i))는 digit_list에서 "0" 요소를 찾아 카운트하고 count변수에 그 수를 저장 그리고 그 count값을 출력한 다음,..

파이썬 2024.03.07

백준 1157 단어공부(파이썬)

알파벳 대소문자로 된 단어가 주어지면, 가장 많이 사용된 알파벳을 알아내는 프로그램을 만든다. 이때 , "대소문자 구분 x" 예를 들어 "Happy"를 입력했을 때 가장 많이 사용된 알파벳인 p의 대문자 P가 출력되어야한다. string = input().upper() string_list = list(set(string)) alphabet = [] for i in string_list: count = string.count(i) alphabet.append(count) if alphabet.count(max(alphabet)) >1 : print("?") else : print(string_list[(alphabet.index(max(alphabet)))]) 1. 먼저 문자열 입력을 받고 모두 대문자로..

파이썬 2024.03.06

백준 1152번 단어의 개수 (파이썬)

문제) 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력) 첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력) 첫째 줄에 단어의 개수를 출력한다. string = input() print(len(string.split())) 1. 문자열을 입력받을 변수 string을 선언해주고 input() 함수를 통하여 문자열을 입력 받습니다. ex) Hello everyone!..

파이썬 2024.03.05

백준 1000번 A+B (파이썬)

새로운 시작입니다! 파이썬을 아예 접해본적이 없는 것은 아니지만 문법이 아직은 낯설기 때문에, 기초부터 천천히 다져보고자 합니다. 문제 ) 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. A,B =map(int,input().split()) print(A+B) 1. 두 정수를 받아야 하기 때문에 A,B를 선언해주고 2. input() 함수를 통해 입력을 받습니다. 3. split() 함수를 통해서 "공백"을 기준으로 문자열을 나눠 줍니다. ex) "3 5"가 입력되었다면 ['3','5']형태의 리스트로 저장됩니다. ->이때 3과 5는 문자열 ! 4.마지막으로 map() 함수입니다. map() 함수는 map(function, iterable, ...)의 형태를 갖습니다. 이 때..

파이썬 2024.03.05

파이썬 알고리즘 공부,,,

소프트웨어학부를 복수전공 시작하고, 이제 세번째 학기입니다. 사실 첫학기는 컴퓨터구조, 이산수학 과목만 수강했기 때문에 두번째 학기라고 봐도 무방합니다;; 지금까지 여러가지를 건들여보았고 알아보았지만, 제대로 공부했다?고 생각한 것은 JAVA 기반의 스프링 프레임워크를 이용한 백엔드입니다. 사실 이마저도 그냥저냥 공부한 것이고, 사실 "이 길이 내 길이다!" 라고 생각하고 체계적으로 계획을 가지고 전력질주한 분야는 또 아닙니다. 최근에는 데이터 분석과 딥러닝 분야에 대해서도 눈독을 들이고 있고, 대학원도 생각이 있기 때문에 둘러보고 싶은 생각이 있지만 마음이 조금은 조급한 것 같습니다. 백엔드를 공부한 계기는 개발자라고 하믄 여러가지 분야가 있겠지만 , 어쩌면 딱딱하게 느껴지는 시스템 프로그래밍 분야는 ..

파이썬 2024.03.05