백준 문제풀이

백준 문제풀이

백준 #2108 통계학(파이썬)

백준 2108 통계학 문제.(실버3) 이 문제를 소개하는 이유는 파이썬의 라이브러리인 statistics를 소개하기 위함이고, 이와 동시에 '어떻게 문제를 풀 것인가' 에 나오는 문제를 풀이하는 방법을 적용해보기 위함이다. '어떻게 문제를 풀 것인가' 에서는 사고의 4가지 단계를 다음과 같이 소개하고 있다. 문제가 무엇인지 파악한다.(문제를 이해한다.) -> 미지인 것은 무엇인가? 자료는 무엇인가? 조건은 무엇인가? 연관 관계를 파악하고 계획을 수립한다. 계획을 실행한다. 회고한다. 그럼 위의 단계에 따라 문제를 해결해보자. 1. 문제파악 미지인 것은 산술 평균, 중앙값, 최빈값, 범위이다. 자료로 주어진 것은, n개의 수와, 주어질 수를 결정하는 n, 그리고 범위의 정의이다. 2. 계획 수립 산술 평균..

백준 문제풀이

백준 #4949 균형잡힌 세상(python)

백준 4949 '균형잡힌 세상' 문제이다. 보통 이 문제를 풀기 전에 '괄호' 문제를 접해 봤을 것이다.(실버 문제) 그렇다면 이 문제를 스택의 특성을 통해서 아주 쉽게 구현할 수 있다. 그냥 괄호인 것만 받아서 짝이 맞으면 pop, 아니면 추가해서 마지막에 스택이 비어 있다면 전부 짝이 맞는 것이고, 아니면 짝이 맞지 않는 것이다. 아주 간단하다. 다음은 파이썬으로 작성된 코드이다. while 1: line = input() if line == '.': break st = [] for i in line: if i == '(' or i == ')' or i == '[' or i == ']': if len(st) == 0: st.append(i) elif st[-1] == '(' and i == ')': ..

백준 문제풀이

백준 #3474 교수가 된 현우(Python)

백준 알고리즘 문제 3474번 교수가 된 현우 문제이다. 실버 4의 문제로 머리만 잘 굴리면 풀 수 있는 문제이다.(사실 모든 문제가 그렇긴 한데, 머릿속으로는 돼도, 구현이 쉽지 않지) 이 문제에서는 팩토리얼을 했을 때 나오는 0의 갯수를 구하라고 나와있다. 그러니까 5!을 하면 120이 나오니까 0이 한 개 인 것이다. 당연히 처음에는 모르니까 하나씩 적어보는게 편하다. 6! 은 720, 7! 은 5040(오른쪽 0갯수만 셈) 8!은 40320.... 자세히 살펴보면 2와 5의 제곱의 짝의 갯수에 의해서 0의 갯수가 정해지는 것을 알 수 있다. 그럼 당연히 소인수 분해를 하면 2의 갯수는 5의 갯수보다 많기 때문에, 결국 5의 제곱의 갯수만 구하면 되는 쉬운 형태로 결론이 난다. 그렇기 때문에 이를 ..

백준 문제풀이

백준 #10709 기상캐스터

백준 10709 기상캐스터 문제이다. 실버 5의 문제이기 때문에 간단하게 풀 수 있다. 문제를 요약하면 원래 C가 있던 자리에는 0을, 구름이 나타나지 않으면 -1을 그게 아니면 몇 분 후에 구름이 나타나는지 표시하면 된다. 구름이 나타나지 않는다는 말은 그 행에 C가 없다는 의미이다. 방법은 여러가지가 있지만, 모두 배열에 추가해서 마지막에 한꺼번에 출력할 수 있고, 한 줄 한 줄 출력할 수 있다. 나는 한 줄 한 줄 출력하는 방법을 선택했다. h, w = map(int, input().split()) for _ in range(h): t = -1 cloud = input() temp = [] for i in range(len(cloud)): if cloud[i] == 'c': t = 0 temp.ap..

백준 문제풀이

백준 #2807 수학숙제

백준 2870 수학숙제 문제이다. 상근이가 숫자만 찾으면 돼서 별로 어려운 문제는 아니다. 다만 문자열을 처리할 때, 파이썬이 아닌 다른 언어들은 살짝 까다로울 수 있다. 이 문제 해결의 핵심은 문자열에서 숫자를 어떻게 뽑아내는가이다. 나는 이것을 큐(queue)로 해결했는데, 문자일 경우 버리고, 숫자일 경우 임시 문자열에 더해서 배열에 추가하는 방식을 사용했다. 이후 map 을 사용해서 문자열을 숫자로 바꿔주면 자연스럽게 앞자리가 0인 숫자(문자열) 들은 10진수로 변환될 것이다. (012 -> 12 , 0014 -> 14) 이렇게 해서 비내림차순(오름차순이라고 하면되는데 굳이...)으로 정렬해서 출력하면 끝. n = int(input()) a = [] temp = '' for i in range(n..

백준 문제풀이

백준 #4659 비밀번호 발음하기

백준 4659 비밀번호 발음하기 문제이다. 알고리즘 분류는 구현과 문자열. ('그냥 닥치고 풀어라'라는 뜻) 위의 문제를 읽어보면 3가지 조건이 주어져있다. 모음은 하나를 반드시 포함해라, 모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다, 같은 글자가 연속적으로 두 번 오면 안 되나, ee와 oo는 허용한다. 언뜻 보면은 이거 일일이 해야하나 싶지만, 실제로 그렇다. (말이 다르잖아!!) 하지만 겁먹을 필요는 없다. 구현은 뭐다? 주먹구구식. while 1: word = input() if word == "end": break flag = True temp = word for x in "aeiou": temp = temp.replace(x, "a") for x in "qwrtypsdfghjklzxv..

백준 문제풀이

백준 #1992 쿼드트리

백준 1992번 쿼드 트리 문제이다. 그래프를 활용한 문제로, 재귀를 이용하면 해결할 수 있는 문제이다. 처음 문제를 보면 문제가 잘 이해가 가지 않는데, 위에 그림으로 준 예시와, 예제를 잘 들여다 보면 쉽게 파악할 수 있다. 정사각형을 한 뭉텅이로 보고 문제 해결을 시도하면 된다. 첫 번째 입력에서 전체 행의 개수를 주기 때문에, 행의 개수를 점차 적으로 줄여나가면서 문제를 해결할 수 있다. #include #include using namespace std; int n; string s; char a[101][101]; string quard(int y, int x, int size ){ if(size == 1) return string(1,a[y][x]); char b = a[y][x]; stri..

백준 문제풀이

#1697 백준 숨바꼭질 코드 C++

1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 백준 1697번 숨바꼭질 문제이다. 백준에는 숨바꼭질 시리즈의 문제가 많은데, 이전 문제는 그리디, DP등 다양한 알고리즘으로 해결이 가능했다. 이 문제 역시 여러 해결 방안이 있지만 타겟 알고리즘은 너비우선탐색(BFS)이다. 문제에서 주어진 예시를 보면 수빈이의 위치는 5이고 동생의 위치는 17이다. 수빈이는 1초후에 위치-1, 위치+1, 위치*2 의 위치로 이동할 수 있다. 5의 경우, 4, 6, 10 으로 이동할 수 있는 것이다...

후;
'백준 문제풀이' 카테고리의 글 목록