개인활동/코테(56)
-
백준 11866번 : 요세푸스 문제 0
https://www.acmicpc.net/problem/11866from collections import dequen, k = map(int, input().split())people = deque([i for i in range(1, n+1)])pop_list = []for _ in range(n): people.rotate(-k) pop_list.append(people.pop())print("") 이 문제를 어떻게 해결하는 것이 좋을지 고민하던 중 deque에서 쓸 수 있는 rotate를 이용하면 편할 것이라고 생각하였고,그 결과 잘 출력되는 것을 확인하였다. 시계방향으로 k번째 요소를 뒤로 보내고, 맨 뒤의 요소만 출력해 pop_list에 넣어주었다. 다음은 숏코드 분석n,k=map..
2024.06.04 -
[프로그래머스] 하샤드 수
하. 이 문제 좀 짜증났다. 입출력 예에 return 값이 소문자로 되어있어서 당연히 문자열로 return하였는데,def solution(x): if len(str(x)) == 1: return "true" x_sum = sum(list(map(int, str(x)))) if x % x_sum: return "false" else: return "true"계속 위와 같이 실행한 결괏값 "false"이 기댓값 false과 다릅니다. 실행한 결괏값 "true"이 기댓값 true과 다릅니다.이런식으로 결과가 출력되었다. 너어어어무 짜증나서 다른사람들 return값을 찾아보니 걍 아래와 같이 return하더라...def solution(x): if len(str(x)) == 1: re..
2024.06.03 -
[프로그래머스] 평균 구하기
import numpy as npdef solution(arr): return np.mean(arr) import statistics as sdef solution(arr): return s.mean(arr) def solution(arr): return sum(arr) / len(arr) 다양한 방식이 있을텐데, 대부분 비슷한 형태를 보였고, 0이 들어온 경우에는 따로 연산 없이 0을 return하도록 조건을 추가해준 코드가 있었다. 이 문제는 깊게 더 볼 것은 없는 듯 하다. 끝~
2024.06.01 -
[프로그래머스] 짝수와 홀수
def solution(num): return "Even" if num % 2 == 0 else "Odd" 여기서 나머지가 아닌 다른 방법이 있을까 고민해보았는데, 다른사람의 코드 중 엄청난 사실을 확인하였다.def evenOrOdd(num): return ["Even", "Odd"][num & 1] 와..... 어떻게 이럴수가...........여기서는 입력받은 num과 1로 비트연산을 수행한다. 예를 들어 입력받은 수가 3이라고 한다면 이는 이진수로 011이다.1은 001이기에 이 둘을 and 연산을 하면 011001-------001이 최종적인 결과로 나오게 된다. 럴수럴수 이럴수가. 재미있는 풀이였다.
2024.06.01 -
백준 2164번 : 카드2
https://www.acmicpc.net/problem/2164 from collections import dequen = int(input())deck = deque([i for i in range(1, n+1)])for _ in range(n): if len(deck) == 1: print(deck[0]) break deck.popleft() deck.append(deck.popleft())이 문제에서도 마찬가지로 deque를 이용해 문제를 풀었다. 여기서 주의해야 할 점은 n은 1부터 입력되기에, deck의 길이가 1인 경우 남은 카드를 바로 출력해줄 수 있도록 하였다.이 조건을 생각 안하고 작업 후 남은 카드의 갯수가 1인지 확인하다보니 index err..
2024.05.31 -
백준 28278번 : 스택 2
28278번: 스택 2첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000) 둘째 줄부터 N개 줄에 명령이 하나씩 주어진다. 출력을 요구하는 명령은 하나 이상 주어진다.www.acmicpc.net무엇이 문제일까?왜 시간 초과일까?숏코드를 보고싶었는데, 공개된 코드가 안보인다n = int(input())stack = []for _ in range(n): order = list(map(int, input().split())) if order[0] == 1: stack.append(order[1]) elif order[0] == 2: if stack: print(stack.pop()) else: pr..
2024.05.30 -
백준 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