본문 바로가기

PYTHON91

프로그래머스 Lv2 이진 변환 반복하기 (python) 이진 변환 반복하기 풀이 주어진 문자열이 '1'이 될 때까지 이진 변환을 반복하면서 반복 횟수와 함께 지운 0의 개수를 반환해야 하는 문제이다. 반복을 몇 번 해야하는지 모르므로 while문을 이용했다. 제거한 0의 갯수를 입력한 변수 생성 및 while문 생성 while문 안에서 count('0')를 이용해서 0 제거 1의 갯수만큼으로 다시 2진수로 변환시키니 bin()을 이용하고, 이렇게 하면 0b~~ 로 출력되니 슬라이싱을 이용 반복 횟수 +1 및 while문에서 나오면 return값을 return 하기 def solution(s): count_zero = 0 i = 0 while len(s) > 1 and s != '1': i += 1 count_zero += s.count('0') s = bin.. 2024. 2. 1.
프로그래머스 Lv1 [PCCE 기출문제] 10번 / 데이터 분석 (python) [PCCE 기출문제] 10번 / 데이터 분석 풀이 문제를 풀었는데 푼 방식은 맞았지만, ext까지 고려해야하는 것을 잊어서, 2번인가 완전실패했다. 왜 안되지 하고 다시 읽었더니 ext를 사용해야하는 코드를 작성안했다. 아래처럼 풀었다. 1. data를 for문을 돌려서 그 안에 있는 값들 중 ext의 val_ext에 해당되는 것들만 추출해서 tmp_data에 입력했다. 1-1. 이 때, 각 ext가 다르므로 if문을 작성하여 걸러주는 작업을 했다. 만약 더 조건이 길어졌다면 if가 아닌 for문을 사용했을 수도 있을 듯 하다. 2. sorted()를 이용해서 tmp_data를 sort_by에 따라 정렬하기 위해 sorted(, key=lambda x: x[])를 사용했다. 여기서도 sort_by의 종류.. 2024. 2. 1.
프로그래머스 Lv1 [PCCE 기출문제] 9번 / 이웃한 칸 (python) [PCCE 기출문제] 9번 / 이웃한 칸 풀이 어려운 문제는 아니다. 반복문만 쓸 줄 알면 바로 풀 수 있다. 1. 우선 board가 주어지므로 이를 활용한다. 또한 board와 board [n]의 길이는 같음을 인지. 2. 문제에서 적힌대로만 풀어도 문제없지만, 난 내 방식대로 dr, dc를 만들어서 상하좌우로 돌아가는 것을 이용했다. 이때 h가 dr과 w가 dc와 연결된다. 3. 상하좌우 4개이므로 for문을 4까지 반복하면서 각 dr[0]~dr[3], dc [0]~dc [3]을 이용하여, 찾으려는 board의 상, 하, 좌, 우에 같은 색이 있는지 확인한다. 3-1. 이 때, dr과 dc를 사용하다 범위를 벗어나게 되면 런타임에러나 인덱스 아웃이 뜨기에 찾는 범위를 0 2024. 2. 1.
유클리드 호제법을 이용한 최대공약수, 최소공배수 구하기 (python) 유클리드 호제법 최대공약수를 구하기 위해 사용할 때 쓰는 방법이다. a > b 인 두 수가 있을 때, a를 b로 나눈 나머지는 r이라고 해보자. 이때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다는 것을 이용한다. 위 내용을 기반으로 계속 반복하면 실질적인 a, b의 최대공약수를 구할 수 있다는 것이다. 예시로 44와 33이 있다고 해보면, 1. a = 44, b = 33, r = 11 => b와 r의 최대약수를 구하기. 2. a = 33, b = 11, r = 0 => 나머지가 0이므로 b가 최대공약수가 된다. 이러한 방법으로 python 코드로 최대공약수와 최소공배수를 구성해 보자. 최대공약수 및 최소공배수 최대공약수 보통의 경우 아래 최대 공약수 함수는 주어지는 값 a, b가 있을 때 a가 .. 2024. 1. 31.
프로그래머스 Lv2 카펫(python) 카펫 풀이 갈색과 노란색의 2가지 색으로 이루어진 카펫의 크기를 구해야 한다. 노란색은 실제로 카펫의 세로 2칸, 가로 2칸을 제외한 길이의 곱 면적이고, 갈색은 노란색을 제외한 즉, 테두리 면적이다. 이를 이용해서 풀이를 하니 다음과 같다. 1. 전체면적 구하기(갈색+노란색) 2. for문을 루트 면적으로 해서 정사각형이 되었을 때 길이까지를 확인하며, 곱하기 면적 중 높이를 먼저 확인하고 이를 바탕으로 너비를 구한다. 3. 구한 높이와 너비를 이용해 height width - brown == (height - 2) (width - 2) 라면 [width, height]로 반환 # 갈색과 노란색의 갯수만으로 카펫의 크기를 구해야한다. def solution(brown, yellow): area = br.. 2024. 1. 31.
백준 브론즈3 2490. 윷놀이 (python) 윷놀이 풀이 윷놀이 도개걸윷모를 ABCDE로 표현해야 한다. 배와 등의 개수에 따라서 다른 것을 인지하고, 이를 이용하면 된다. 배: 0, 등:1로 표현되었다. 1. 1의 개수에 따른 dictionary작성 2. sum()을 이용한 1의 개수 확인 3. 출력 한번 switch_case를 python에서 사용할 수는 없을까 해서 아래처럼 작성이라도 해봤다. # 등1 걸 C # 등2 개 B # 등3 도 A # 등4 모 E # 등0 윷 D def switch_case(value): return { 1: 'C', 2: 'B', 3: 'A', 4: 'E', }.get(value, 'D') for _ in range(3): yoot = list(map(int, input().split())) yootName = '.. 2024. 1. 31.