Algorithm

·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1380 1380번: 귀걸이 입력은 번호를 가진 시나리오들로 구성됩니다. 시나리오 번호는 1부터 순서대로 증가하고, 각 시나리오는 아래의 내용을 포함합니다. 한 줄에 귀걸이를 압수당한 여학생의 수, n (1 ≤ n ≤ 100)이 www.acmicpc.net [풀이] earring 딕셔너리에 학생 번호를 key 값, 알파벳을 value 값으로 받는다. 만약 입력받은 학생 번호가 earring 딕셔너리에 이미 존재한다면 해당 번호를 딕셔너리에서 삭제한다. next(iter(earring)) 는 iter() 함수를 이용해 딕셔너리의 첫 번째 키를 가져오는 방법이다. 이는 list(earring.keys())[0] 이렇게 사용해도 똑같은 결괏값을..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2720 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net [풀이] 거스름 돈을 25, 10, 5, 1로 나눈 몫을 출력한다. [코드] if __name__ == '__main__': for _ in range(int(input())): c = int(input()) print(c // 25, end=' ') c %= 25 print(c // 10, end=' ') c %= 10 print(c // 5, end=' ') c %= 5 print(c // 1)
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1864 1864번: 문어 숫자 해류가 매우 느리고 바닥을 기어다니는 생물이 적은 바다 밑바닥에서만 발견되는 잔물결 무늬의 정체는 오랫동안 해양학자들에게 수수께끼였다. 하지만 최근의 연구 성과는 동물 언어학 분야 www.acmicpc.net [풀이] 문어 숫자 중 '/'가 -1이라 int( , 8)의 방식으로는 풀 수 없다. 따라서 함수를 사용하지 않고 실제로 8진수를 구하듯이 자릿수마다 8을 곱해주어야 한다. [코드] if __name__ == '__main__': wave = {'-': 0, '\\': 1, '(': 2, '@': 3, '?': 4, '>': 5, '&': 6, '%': 7, '/': -1} while True: n =..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/2997 2997번: 네 번째 수 첫째 줄에 상근이가 고른 네 개의 숫자 중 세 개가 주어진다. 이 숫자는 크기 순이 아닐 수도 있고, -100보다 크거나 같고, 100보다 작거나 같은 정수이다. www.acmicpc.net [풀이] [코드] import sys if __name__ == '__main__': temp = sorted(list(map(int, sys.stdin.readline().split()))) first_d = temp[1] - temp[0] second_d = temp[2] - temp[1] if first_d == second_d: print(temp[2] + second_d) elif first_d < secon..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net [풀이] 방의 마지막이 'X'(벽)이여야 row_cnt와 col_cnt가 2 이상일 경우 누울 자리에 1을 더하기 때문에 입력받은 문자열에서 맨 오른쪽열과 맨 아래쪽행을 'X'로 패딩해주었다. [코드] if __name__ == '__main__': n = int(input()) room = [] for _ in range(n): room += [input() + 'X'] roo..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1252 1252번: 이진수 덧셈 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. www.acmicpc.net [풀이] int() 함수 두 번째 인자를 2로 주어 입력받은 a와 b를 2진수로 인식한 후 10진수 덧셈을 한다. 결괏값을 bin() 함수를 이용해 다시 2진수로 변환해준다. bin함수를 이용 시 자동 생성되는 2진수임을 표현하는 '0b'를 빼고 출력하기 위해 [2:]로 슬라이싱 해 출력한다. [코드] if __name__ == '__main__': a, b = input().split() prin..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1225 1225번: 이상한 곱셈 첫째 줄에 A와 B가 주어진다. 주어지는 두 수는 모두 10,000자리를 넘지 않는다. www.acmicpc.net [풀이] 되게 쉽다고 생각하고 풀었다가 시간 초과 떠서 슬펐음.. 다른 방법은 진짜 모르겠어서 찾아봤더니 문자 하나씩 곱해 더하는 거랑 각자 더한 것을 곱하는 것과 결괏값이 같다고 한다.. 이거를 어떻게 생각해내지?!?!.. 예제를 풀어보면 sum(A) = 6, sum(B) = 9 이기 때문에 sum(A) * sum(B) 는 54가 된다. [코드] - 시간 초과 import sys if __name__ == '__main__': A, B = sys.stdin.readline().split()..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1373 1373번: 2진수 8진수 첫째 줄에 2진수가 주어진다. 주어지는 수의 길이는 1,000,000을 넘지 않는다. www.acmicpc.net [풀이] 1) 첫 번째 제출 코드 input을 [::-1]을 이용해 거꾸로 받아 n에 저장한다. n을 3개씩 슬라이싱한 len()이 2이면 '0'을 추가, 1이면 '00'을 더한다. 그 후 자릿수에 맞게 곱하고 더해서 8진수 octal을 구한 후 str()로 문자열화 해 result에 추가한다. 마지막에 result를 거꾸로 출력한다. 2) 두 번째 수정 코드 int()는 인자가 두 개가 들어갈 수 있는 함수이다. int(input(), 2)의 경우 input을 2진수로 인식해준다. 인자의 ..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1173 1173번: 운동 첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다. www.acmicpc.net [풀이] sys.stdin.readline()이 기존에 쓰던 입력 방식보다 빠른 입력이라고 해서 바꿨다. # N, m, M, T, R = map(int, input().split()) 밑 방법보다 시간복잡도가 안좋음 N, m, M, T, R = map(int, sys.stdin.readline().split()) 1) 운동을 할 수 없는 경우 초기 맥박 + 운동 시 증가하는 맥박 > 최대 맥박 일 경우 운동을 할 수 없으므로 반복문을 나온다. 2) 운동 현재 맥박인 pulse + 운동 시 증가하는 맥박 최대 맥박 일 경우 휴식..
서채리
'Algorithm' 태그의 글 목록 (10 Page)