본문 바로가기

DEVELOP/Algorithm

[Python] 백준 알고리즘 문제풀이 :: 9020번 백준 알고리즘 9020번 골드바흐의 추측 문제풀이. 소수 분류에 있는 문제를 풀면서 시간초과가 엄청 많이 났다. 심지어 가장 시간 오래 걸릴 것 같은 경우를 파이참으로 돌렸을 땐 잘 나와도 백준에서 돌리면 시간초과가 나오는 경우가 많았다. 고생 좀 했다. 골드바흐의 추측은 2보다 큰 모든 짝수를 두 소수의 합으로 나타낼 수 있다는 것이다. 10000 이하의 수는 이미 증명이 됐다. 그에 해당하는 소수 조합을 출력하는 문제다. 문제 https://www.acmicpc.net/problem/9020 풀이 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import sys primes = []for i in.. 더보기
[Python] 백준 알고리즘 문제풀이 :: 9012번 파이썬을 이용한 백준 알고리즘 9012번 괄호 문제풀이. 스택으로 분류되어 있는 걸 생각하면 쉽게 풀린다. 그런데 스택을 생각하지 못한다면 은근 복잡하게 느껴지는 문제. 한 3분 이거 규칙을 어떻게 파악하지 생각했다. 그러다 문득 스택 문제집에 들어있다는 걸 생각하니 바로 해결책이 떠올랐다. 문제 https://www.acmicpc.net/problem/9012 풀이 1234567891011121314151617181920212223242526import sys tc = int(sys.stdin.readline()) for t in range(0, tc): flag = 1 stack = [] ps = sys.stdin.readline().rstrip() for i in range(0, len(ps)): .. 더보기
[Python] 백준 알고리즘 문제풀이 :: 2448번 몇 주를 고민했던 문제다. 프랙탈을 구현하는 문제. 쉬워보이면서도 막상 파이썬으로 구현하려고 하면 쉽지 않았던 문제다. 풀릴 듯 계속 안 풀리던 문제였는데 연휴에 하루 날 잡고 풀어버렸다. 백준 단계별 풀기를 처음부터 순서대로 쭉 풀다가 처음으로 막혀서 건너뛴 문제였다. 드디어 풀어버려서 기분이 좋다. 막상 마음먹고 고민하니깐 어렵지 않게 풀려서 희한했다. 풀 수 있다, 없다라는 마음가짐이 가져오는 결과의 차이를 보여주는 문제였다. 특히나 처음 시도했을 때와의 차이점은 재귀에 어느 정도 익숙해졌다는 것이다. 재귀를 말로만 들으면 쉬운데 막상 이를 활용해서 어떤 알고리즘을 구현하려면 생각만큼 쉽지 않다. 프랙탈 문제를 풀었다는 게 어느 정도 재귀를 활용할 수 있게 됐다는 증거라고 생각된다. 음 그리고 태도.. 더보기
[Python] 백준 알고리즘 문제풀이 :: 1094번 C로는 SW Expert Academy 문제를, 파이썬으로는 백준 문제를 푼다. 각각 1일 1문제를 풀기로 했고 거의 지키고 있다. 다만 블로그 업로드는 아무래도 C를 많이 올리게 됐다. 코드도 좀 더 길고 복잡하다보니 할 말이 많아서. 오랜만에 파이썬 문제를 하나 풀린다. 막대기 문제. 본질은 이진법으로 숫자를 구현하는 문제다. 재귀를 썼다. 문제 https://www.acmicpc.net/problem/1094 풀이 123456789101112131415import sys def stickAdder(x, stick, cnt, idx): unit = [64, 32, 16, 8, 4, 2, 1] if stick+unit[idx] == x: print(cnt) elif stick+unit[idx] 더보기
[C] SW Expert Academy 문제풀이 :: 1954번 SW Expert Academy 1954번 달팽이 숫자 문제풀이. 처음에 접근법이 살짝 헷갈렸던 문제. 뭔가 효율적이고 쉬운 방법이 있을 것 같았다. 근데 풀다보니깐 그냥 배열을 만들어 놓고 일일이 메모리에 접근해서 숫자를 대입했다. 컴공 첫 과제로 내는 문제라고들 한다. 몇 번 숫자를 대입하고 방향을 꺾나 세보니 n, n-1, n-1, n-2, n-2, .... 2, 2, 1, 1, 이런 식으로 되더라. 시작부터 n번 오른쪽으로 진행하고 아래로 방향을 꺽고, n-1 아래로 진행하고 왼쪽으로 방향을 꺾는 식. (n, n-1) (n-1, n-2) ,.... (2,1), 1로 분할해줬다. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?c.. 더보기
[C] SW Expert Academy 문제풀이 :: 1961번 SW Expert Academy 1961번 숫자 배열 회전 문제풀이. 문제가 말하는 게 무슨 말인지 이해하는데 한참 걸렸다. 2차원 배열을 90도, 180도, 270도 회전해 출력하는 문제인데, 1자리 수가 들어있는 3x3 행렬을 회전했더니 3자리 수가 들어있는 3x3 행렬이 나온 것이다. 알고보니 90, 180, 270도 회전한 배열을 나란히 출력한 것이었다. 어쨌든 구현은 간단했다. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 2.. 더보기
[C] SW Expert Academy 문제풀이 :: 1966 번 SW Expert Academy 1966번 숫자를 정렬하자 문제풀이. 간단한 정렬 문제다. 아무 정렬이나 사용하면 된다. 버블정렬을 사용했다. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PrmyKAWEDFAUq&categoryId=AV5PrmyKAWEDFAUq&categoryType=CODE 주어진 N 길이의 숫자열을 오름차순으로 정렬하여 출력하라. 풀이 12345678910111213141516171819202122232425262728293031323334353637383940414243#include #include int bubbleSort(int a[], int size) { int i, j.. 더보기
[C] SW Expert Academy 문제풀이 :: 5431번 SW Expert Academy 민석이의 과제 체크하기 문제풀이. 공교롭게도 처음 푼 레벨3 문제 2개가 모두 쉬웠다. 자신감을 더욱 상승시켜준 문제. 꾸준히 준비하면 삼성 역량 테스트도 충분히 도전해볼만 하겠다. 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl3rWKDBYDFAXm&categoryId=AWVl3rWKDBYDFAXm&categoryType=CODE 과제를 제출하지 않은 사람의 번호를 오름차순으로 출력하는 프로그램을 작성하라. 풀이 12345678910111213141516171819202122232425262728293031323334353637#include #include int m.. 더보기