문제풀이/BOJ

백준 알고리즘
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1769 1769번: 3의 배수 문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를 www.acmicpc.net [풀이] 문제의 알고리즘 분류에 재귀가 있어서 재귀로 풀었다. 매개변수로 온 string의 길이가 1보다 큰 경우 conversion 함수를 재귀 호출한다. [코드] def conversion(string, cnt): if len(string) > 1: cnt += 1 n = 0 for i in string: n += int(i) conversion(str(n), cnt) else: if in..
·문제풀이/BOJ
[문제] https://www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오 www.acmicpc.net [풀이] DNA 리스트를 열 단위로 봤을 때 가장 많을 것을 한 개씩 고른다. 예를 들어 첫 번째 열에서 문자 A가 가장 많을 경우 결과로 출력될 첫 번째 문자는 A가 된다. Hamming Distance의 합은 DNA의 수 n에서 가장 많이 나온 문자의 개수 max(A)를 빼면 가장 많이 나온 문자와 일치하지 않는 갯수가 나온다. [코드] i..
·문제풀이/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/2547 2547번: 사탕 선생 고창영 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 빈 줄로 구분되어 있고, 다음과 같이 구성되어 있다. 테스트 케이스의 첫째 줄에 학생의 수 N이 주어진다. 다음 N개의 줄에는 www.acmicpc.net [풀이] 간단한 수학 문제 [코드] if __name__ == '__main__': for _ in range(int(input())): input() student_num = int(input()) candy = 0 for __ in range(student_num): candy += int(input()) if candy % student_num == 0: print("YES"..
·문제풀이/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' 카테고리의 글 목록 (11 Page)