개인활동/코테(56)
-
[프로그래머스] 자릿수 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/12931def solution(n): str_n = str(n) answer = 0 for num in str_n: answer += int(num) return answer단순하게 문자열로 받아오고, 이를 하나하나 분리하여 int로 수정해 더해주는 과정을 거쳤다. 그러나. 다른사람의 코드를 보는 와중에 재귀로 푸는 사람을 발견.def sum_digit(number): '''number의 각 자릿수를 더해서 return하세요''' if number 나. 너무 생각없이 문제를 푸는 것 같아 반성하게 되는 것 같다. 먼저 10으로 나눴을 때의 나머지 = 1의..
2024.05.25 -
백준 4949번 : 균형잡힌 세상
https://www.acmicpc.net/problem/4949 이때 주의해야 할 점, 괄호가 없는 문자열 또한 균형이 잘 맞춰져 있는 경우로 판단 while True: input_str = input() if input_str == ".": break balance = "" for i in input_str: if i in "()[]": balance += i for _ in range(len(input_str) // 2 + 1): balance = balance.replace("()", "") balance = balance.replace("[]", "") if balance: prin..
2024.05.24 -
백준 9012번 : 괄호
https://www.acmicpc.net/problem/9012 이 문제는 스택을 활용한 문제이다.어떻게 스택이랑 연관지어야 할지 고민하던 중, "(" 이것을 push, ")" 이것을 pop으로 활용하여 문제를 풀어보기로 하였다.count = int(input())for _ in range(count): vps_str = input() vps_list = [] try: for i in vps_str: if i == "(": vps_list.append(i) else: vps_list.pop() print("YES" if len(vps_list) == 0 else "NO") except IndexError: print("NO")..
2024.05.23 -
[프로그래머스] 약수의 합
def solution(n): sum = 0 for i in range(1, n+1): if n % i == 0: sum += i return sum 약수 문제를 어디선가 풀었던 것 같은데 기억이 안난다.여튼 내가 푼 방식은 n만큼의 반복문을 돌며 나누었을 때 나머지가 0인 것을 찾아 sum에 더해준다. def sumDivisor(num): # num / 2 의 수들만 검사하면 성능 약 2배 향상잼 return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0]) 그리고 다른 분의 아주 간단한 코드를 보았는데, 댓글들을 보니 다들 감탄하고있다.여기서 num // 2 + 1을 해준 값만..
2024.05.20 -
[프로그래머스] 문자열을 정수로 바꾸기
def solution(s): return int(s) 여기서 마이너스 부호가 들어가더라도 이를 부호로 잘 인식하여 통과되는 것을 확인할 수 있었다. 다른사람들의 코드를 확인해보니 가장 먼저 눈에 띄는 코드가 있었다.def strToInt(str): result = 0 for idx, number in enumerate(str[::-1]): if number == '-': result *= -1 else: result += int(number) * (10 ** idx) return result 입력받은 값을 뒤에서 가져와 하나하나 확인하고 이를 더해준 뒤 마지막에 부호를 확인해주었다. 이 코드를 보며 int()의 알고..
2024.05.19 -
[프로그래머스] 문자열 내의 p와 y의 갯수
def solution(s): cnt_p = 0 cnt_y = 0 s = s.lower() answer = False for character in s: if character == "p": cnt_p += 1 elif character == "y": cnt_y += 1 else: pass if cnt_p == cnt_y: answer = True return answer count가 가능한지 모르겠던 나머지 주먹구구식 코드를 짜버렸다.다른사람 코드를 확인해보니 count가 가능하더라. 이래서 사람이 기본적으로 사용 가능한 ..
2024.05.18 -
백준 10773번 : 제로
10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 또 시간 초과다. 왜일지 전혀 감이 오지 않는다. 나랑 똑같은 형태로 코드를 작성한 사람들이 있음에도 불구하고 왜 내 코드는 시간초과가 뜨는 것일까? input으로 받아오는 것 때문에 그런걸까? n = int(input()) stack = [] for _ in range(n): num = int(input()) if num == 0: stack.pop() else: stack.append(num) print(sum(stack))
2024.02.09 -
백준 10814번 : 나이순 정렬
10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 이번 문제는 입력받은 나이와 이름을 가입한 순서대로, 나이 순으로 정렬하는 문제이다. 이 문제는 stable sort를 이용해야 하는 것인데, python에서 제공하는 sort, sorted 함수는 stable sort가 기본이라고 한다. 그래서 파이썬으로 이 문제를 푼다면 그냥 정렬해주어도 괜찮다는 것 n = int(input()) coor_list = [list(input().split()) for _ in range(n)] for i in range(n): coo..
2024.02.01 -
백준 11650번 : 좌표 정렬하기
11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 이차원 배열을 뭔가 우선순위를 두고 정렬할 수 없을까 하며 이것저것 자료를 찾아보던 중 유레카를 외치게 되는 자료를 찾고, 드디어 이 문제를 해결했다. n = int(input()) coor_list = sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x : (x[0], x[1])) for i in coor_list: print(*i..
2024.01.26 -
백준 1181번 : 단어 정렬
1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 오늘의 문제는 단어 정렬 문제이다. 이 문제의 포인트는 1. 중복 제거 2. 똑같은 길이의 단어는 알파벳 순으로 정렬 이부분에서 중복 제거의 경우 set으로 입력받으면 제거가 가능하다 정렬 또한 길이로 혹은 알파벳 순으로는 가능하나 이 둘을 어떻게섞어야 할지가 고민됐다 뭔가 lambda를 쓰면 해결할 수 있을 것 같은데 감이 오지 않았다. 그래서 구글링을 좀 해보며 얻은 결론은 n = int(input()) words = sorted(set(input..
2024.01.24