Cute Running Puppy
반응형

algorithm/Baekjoon 22

2468_안전 영역

문제 2468번: 안전 영역 (acmicpc.net) 2468번: 안전 영역 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그 다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 www.acmicpc.net 접근 방식 1. 상하좌우를 돌며 내린 비의 양보다 높은 곳이 있는지 파악한다 -> DFS 활용 2. 높다면 방문처리 한 뒤 return True 3. 낮다면 return False 이 과정을 가장 높은 지역 크기 만큼 반복 (내리는 비의 양) 주의할 점 1. 재귀 함수 범위에 주의하자 # 재귀 함수 범위를 늘려주는 코드 import sys sys.setrecursionlimit(10**7) 2. 제공된 graph를 ..

algorithm/Baekjoon 2023.04.24

2667_단지번호붙이기

2667번: 단지번호붙이기 (acmicpc.net) 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 접근 방법 상하좌우를 모두 돌며 집이 연결되어 있는지 확인 -> DFS 사용 1. 노드 == 1이면 0으로 변경하고 상, 하, 좌, 우 확인 후 return True 2. 노드 == 0 이면 return False 3. global 변수를 사용하여 상하좌우 확인할 때 집의 개수 추가 주의 할 점 1. 상하좌우를 확인 할 때 범위를 넘어갈 수 있으므로 미리 예외 처리 하기 2. graph 값 int 로 변환하기 정..

algorithm/Baekjoon 2023.04.24

[python] 5622_다이얼

https://www.acmicpc.net/problem/5622 5622번: 다이얼 첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다. www.acmicpc.net string = list(input()) dial = { 3: ["A", "B", "C"], 4: ["D", "E", "F"], 5: ["G", "H", "I"], 6: ["J", "K", "L"], 7: ["M", "N", "O"], 8: ["P", "Q", "R", "S"], 9: ["T", "U", "V"], 10: ["W", "X", "Y", "Z"] } res = 0 for i in string: for j in range(3, 11): if i in dial[j]: re..

algorithm/Baekjoon 2022.02.17

[python] 2941_크로아티아 알파벳

https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net cro = ["c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="] alpha = input() for i in cro: if i in alpha: ''' alpha = alpha.replace(i, '') res += 1 발견한 크로아티아 문자를 없애면 중복된 크로아티아 문자를 셀 수 없다. ''' alpha = alpha.r..

algorithm/Baekjoon 2022.02.17

[python] 1712_손익분기점

https://www.acmicpc.net/problem/1712 1712번: 손익분기점 월드전자는 노트북을 제조하고 판매하는 회사이다. 노트북 판매 대수에 상관없이 매년 임대료, 재산세, 보험료, 급여 등 A만원의 고정 비용이 들며, 한 대의 노트북을 생산하는 데에는 재료비와 www.acmicpc.net a, b, c = map(int, input().split()) if (b >= c): res = -1 else: res = int(a / (c - b)) + 1 print(type(round(a / (c - b)))) print(res) 1. b == c 일 때에도 손익분기점이 계산되지 않는다. 2. 계산 결과를 int 형으로 변환하는 것을 잊지 않아야 한다.

algorithm/Baekjoon 2022.02.17

[python] 2292_벌집

https://www.acmicpc.net/problem/2292 2292번: 벌집 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌 www.acmicpc.net num = int(input()) honeycomb = [1] while(1): if (num == 1): break else: honeycomb.append(honeycomb[-1] + (6 * len(honeycomb))) if(honeycomb[-1] >= num): break print(len(honeycomb)) 계차수열의 값들을 계산해서 리스트에 넣고 리스트의 개수를 세는 방식으로 코드를 작성하..

algorithm/Baekjoon 2022.02.17

[python] 백준 2908_상수

https://www.acmicpc.net/problem/2908 2908번: 상수 상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 www.acmicpc.net a, b = list(input().split()) new_a = [] new_b = [] for i in a: new_a.insert(0, i) for i in b: new_b.insert(0, i) new_a = ''.join(new_a) new_b = ''.join(new_b) print(max(new_a, new_b))

algorithm/Baekjoon 2021.08.05

[python] 백준 1152_단어의 개수

https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 www.acmicpc.net 정답 코드 s = input().split(' ') cnt = len(s) if (s[0] == ''): cnt -= 1 if (s[len(s) - 1] == ''): cnt -= 1 print(cnt) 예제 출력 문자열 맨 앞과 뒤에 공백이 있음에 주의해야 한다.

algorithm/Baekjoon 2021.08.05

[python] 백준 1157_단어 공부

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 정답 코드 #입력 받은 문자를 대문자로 변경하여 s1에 저장한다. s1 = input().upper() #중복을 제거하기 위해 s1을 set 함수에 넣는다. s2 = list(set(s1)) #s1에 등장하는 문자의 개수를 세어 cnt 리스트에 넣는다. cnt = [] for i in s2: cnt.append(s1.count(i)) #index를 활용하여 가장 많이 등장한 알파벳을 변수에 저장한다. max_alphabet = s..

algorithm/Baekjoon 2021.08.04

[python] 백준 2675_문자열 반복

https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 정답 코드 1 n = int(input()) for _ in range(n): r, s = input().split() r = int(r) for i in range(len(s)): for j in range(r): print(s[i], end='') print() 정답 코드 2 n = int(input()) for _ in range(n): r, s = input().split() r ..

algorithm/Baekjoon 2021.08.04