코딩테스트 13

하루 코테 1개 풀기 - 향해 7일차

https://www.acmicpc.net/problem/1181 헷갈리고, 다시한번 볼 점# ❌ 잘못된 표현sorted(myword, key=lambda x: x, len(x)) # ✅ 올바른 표현sorted(myword, key=lambda x: (x, len(x))) ← 알파벳 → 길이sorted(myword, key=lambda x: (len(x), x)) ← 길이 → 알파벳 n = int(input())myset = set()for _ in range(n) : word = input() myset.add(word) sorted_word = sorted(myset, key=lambda x : (len(x), x))for i in sorted_word : p..

코딩테스트 2025.04.20

하루 코테 1개 풀기 - 향해 6일차

n, w = input().split()n = int(n)nicknamelist = set()for _ in range(n): nickname = input() nicknamelist.add(nickname)if w == 'Y': required = 2elif w == 'F': required = 3elif w == 'O': required = 4max_games = len(nicknamelist) // (required - 1)print(max_games)set() :집합을 처리하기 위한 것,중복을 허용하지 않는다순서가 존재하지않는다.- 값을 추가 : add() - 값 제거 : remove(), discard() remove(): 없는 값을 지울려하면 오류가 발생 discar..

코딩테스트 2025.04.20

하루 코테 1개 풀기 - 향해 4일차

오늘의 문제https://www.acmicpc.net/problem/3986오늘은 스택문제 내가 푼 문제 풀이n = int(input())answer = 0for _ in range(n) : stack = [] word = input() for i in word: if stack and stack[-1] == i : stack.pop() else : stack.push(i) if not stack : answer += 1print(answer) 받아서 가장 최근 것과 같을 경우 삭제해가는 방식으로 진행하였다.   회고 스택, 큐 문제는 단골문제라서 다른 유형으로 많이 풀어보고 싶다.주말에 1시간이라도 시간이 난다..

코딩테스트 2025.04.08

하루 코테 1개 풀기 - 향해 3일차

n = 0 이면 무조건 1이다. 를 알 수 있다.여기서 고민이였던 점은 ! 을 문자로 인식해서 어떻게 오른쪽에 몇개, 왼쪽에 몇개를 알아오는 것이였다. from sys import stdinn = int(input())input_line = stdin.read().splitlines()answer = []for i in input_line: left = 0 while left 무식하게 구현해봤다.왼쪽 오른쪽 구현을 구분하는 것을 어떻게 진행할 것인지를 고민을 했다.

코딩테스트 2025.04.02

하루 코테 1개 풀기 - 향해 2일차

https://www.acmicpc.net/problem/10820알파벳관련하여 값을 출력하는 문제이다대소문자 관련한 메소드를 정리해보면1. 대소문자 상호 변환 swapcase()원본을 바꾸지 않는다 2. 대문자 변환 upper(), 대문자인지 확인 isupper()3. 소문자 변환 lower(), 소문자인지 확인 islower() 를 활용해서 문제를 풀면 될거 같다. 추가로 isspace() 공백확인 , isdigit() 숫자확인 이다. 그리고 문제에서 여러줄을 입력받기 때문에 while 문을 돌리던가  stdin.read().splitlines() 을 활용한다.sys.stdin.read().splitlines()파일의 끝까지 한번에 읽어오고 개행문자를 제외하여 리스트로 읽는다.['Hello', 'Ba..

코딩테스트 2025.04.01

하루 코테 1개 풀기 - 2일차

물품 개수 N개을 받고 둘째 줄부터 N개의 줄에 걸쳐 i번째 줄에 S,P 가 공백을 두고 주어진다가장 비싼 물품과 가장 저렴한 물품을 출력받는다.입력 :5watch 2000scarf 1500boots 4000coat 10000perfume 7000 출력coat 10000scarf 1500내가한 답n = int(input())items = []for _ in range(n): name, price = input().split() price = int(price) items.append((name, price))# 가장 비싼 물품 찾기most_expensive = max(items, key=lambda x: x[1])# 가장 저렴한 물품 찾기cheapest = min(items, key=la..

코딩테스트 2025.03.12

[알고리즘] DFS, BFS

DFS란?자료의 검색, 트리나 그래프를 탐색하는 방법. 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색하고 끝까지 탐색하면 다시 위로 와서 다음을 탐색함여 검색한다. BFS란?한 노드를 시작으로 인접한 모든 정점들을 우선 방문하는 방법. 더 이상 방문하지 않은 정점이 없을 때까지 방문하지 않은 모든 정점들에 대해서도 넓이 우선 검색을 적용한다. 왜 사용하는 걸까?모든 경우의 수를 전부 탐색해야할 경우에 쓰인다. 예시로 알파고가 있다.모든 대국의 수를 계산하고 예측하여 최적의 수를 계산해내기 위해 모든 수를 전부 탐색해야 한다.DFS 와 BFS 는 그 탐색하는 순서에서 차이가 있다.DFS는 끝까지 파고드는 것이고 BFS는 갈라진 모든 경우의 수를 탐색해보고 오는 것이다. 실제 구현해보기DFS- 노드..

알고리즘 2025.02.24

[알고리즘] 점근 표기법

점근 표기법이란?알고리즘의 성능을 수학적으로 표기하는 방법이다.점근 표기법의 종류에는 빅오 표기법과 오메가 표기법이 있다. 빅오 표기법은 최악의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지빅오메가 표기법은 최선의 성능이 나올 때 어느 정도의 연산량이 걸릴것인지에 대해 표기한다. 예를 들어 빅오 표기법으로 표시하면 O(N), 빅오메가 표기법으로 표시하면 Ω(1) 의 시간복잡도를 가진 알고리즘이다. 예시 문제)다음과 같은 숫자로 이루어진 배열이 있을 때, 이 배열 내에 특정 숫자가 존재한다면 True, 존재하지 않다면 False 를 반환하시오. def is_number_exist(number, array): for i in array : print("i의 값 = " , i) ..

알고리즘 2025.02.23

[알고리즘] 1주차 시간 복잡도 & 공간복잡도

def find_max_num(array): max_num = array[0] for i in array : if i > max_num : max_num = i return max_num우선 한 문제를 풀면서 시작해보자!print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))1번째 풀이법:def find_max_num(array): num = 0; for i in array : ..

알고리즘 2025.02.22