개인활동(92)
-
백준 12789번 : 도키도키 간식드리미
https://www.acmicpc.net/problem/12789 어렵다.이런 문제도 풀어야하는데... 머리가 안돌아간다. 최대한 다른 사람 코드를 안보고 내 손으로 짜보고 싶었지만..야밤에 배도 고프고 머리가 안돌아가서 다른 분들의 코드를 참고하였다. 그리고 충격적인 사실. 이렇게 간단한 문제라고?n = int(input())array = list(map(int, input().split()))stack = []number = 1for i in array: stack.append(i) # print(f"i : {i}, array : {array}, stack : {stack}, number : {number}") while stack and stack[-1] == number: ..
2024.05.29 -
[프로그래머스] 정수 제곱근 판별
# def solution(n):# num_list = [i for i in range(1, n + 1) if n % i == 0]# if len(num_list) % 2 != 0:# answer = (num_list[len(num_list) // 2] + 1)**2# else :# answer = -1# return answerdef solution(n): n_root = n**(1/2) if n_root % 1 == 0: return (n_root + 1) ** 2 else: return -1## 어떤 수의 제곱인지 확인하기"""1. 약수 구하기 -> 약수의 갯수가 홀수이면? -> 어떤 수의 제곱 : 시..
2024.05.28 -
[프로그래머스] 정수 내림차순으로 배치하기
def solution(n): answer = "" num_list = sorted(str(n), reverse=True) for i in num_list: answer += i return int(answer) 정렬까지는 짧게 했지만... 리스트로 변환되었을 때 이를 효율적으로 쌓고 출력하는 방식이 무엇일지 고민이 많았다.결국에는 for문을 이용해 차곡차곡 더해주는 방식을 선택했는데, 다른 사람의 코드를 보고 감탄하였다. def solution(n): ls = list(str(n)) ls.sort(reverse = True) return int("".join(ls)) 바로 join을 이용한 것인데, 이는 python 내장 함수로 join의 파라미터로 i..
2024.05.27 -
[프로그래머스] 자연수 뒤집어 배열로 만들기
def solution(n): answer = list(map(int, str(n))) answer.reverse() return answer이런 문제를 풀던 찰나...list(map(int, str(n))).reverse()를 해주니 None값이 뜨는 에러가 발생reverse()를 분리해주니 에러없이 문제가 잘 해결되었다. 어떤 이유인지는 모르겠다. 여기서 내장함수인 reversed를 이용한 방식도 존재한다.def solution(n): answer = reversed(list(map(int, str(n)))) return list(answer)여기서 return 값에 list를 씌우는 이유는 answer 자체는 reversed 객체이기에 이를 변환해야하기 때문이다. ret..
2024.05.26 -
[프로그래머스] 자릿수 더하기
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