분류 전체보기 779

백준 4673번 셀프 넘버 파이썬

리뷰입력이 없어 당황했는데 그다지 어렵지 않은 문제였다. 문제 풀이10001개 길이의 배열을 False로 초기화 해준다.for문을 개행해 주고 현재 숫자 + 각 자릿수의 합을 구해준 뒤 배열의 해당 인덱스를 True로 바꿔준다.배열 중 False값을 가진 인덱스를 출력해 준다. 참고 사항배열의 범위를 넘어간 즉, 10000이상의 숫자는 무시한다.  정답 코드def q4673(): # 백준 4673번 셀프 넘버 파이썬 dp = [False] * 10001 for i in range(1, 10001): temp = i while i > 0: temp += i % 10 i //= 10 if temp

백준 2577번 숫자의 개수 파이썬

리뷰eval 함수를 처음 접하게 되었다. 문제 풀이리스트에 세개의 정수 인자를 받아온다.val에 리스트에 존재하는 숫자의 곱을 문자열로 받아온다.0~9의 키값을 갖는 딕셔너리를 초기화 해준다.val값을 돌며 딕셔너리의 키값과 매치되는 숫자의 값을 올려준다.각 딕셔너리의 value값을 출력해 준다. 참고 사항eval함수는 연산이 가능한 문자열로 이루어져 있을 경우 문자열의 연산을 수행한 뒤 값을 출력해 준다.val을 문자열로 변경해 주었을 경우 딕셔너리의 키 값도 문자열이 되어야 한다. 정답 코드def q2577(): # 백준 2577번 숫자의 개수 파이썬 lst = [int(input()) for _ in range(3)] val = str(eval('*'.join(map(str, lst..

백준 1110번 더하기 사이클 파이썬

리뷰문자열로 접근해야 하나 싶었지만 오히려 더 복잡해 질 것 같아서 그냥 지저분하게 구현하게 되었다. 최적화 코드가 있을 것 같긴 하다. 문제 풀이우선 새로운 숫자를 구해준다.수가 10 이상일때 일의 자리 수 * 10 + 각 자릿수를 더한 값의 일의 자리 수수가 10 미만일때 일의 자리 수 * 10 + 일의 자리 수result는 1로 초기화 해준다. (이미 한번 실행 한 상태)while문을 돌며 result를 증가 시키고 작업을 반복해준다.초기 n값과 현재 수가 동일할 경우 break 후 result값 출력 참고 사항없음  정답 코드def q1110(): # 백준 1110번 더하기 사이클 파이썬 n = int(input()) if n // 10: n2 = (n % 10 * 1..

백준 19947번 투자의 귀재 배주형 파이썬

리뷰버림이라는 조건이 까다로운 문제였다. 4달전 dp를 공부하기 전에는 while로 시도했다가 틀렸었다. 문제 풀이y의 범위는 0~10이기에 dp를 11개의 리스트로 생성해 준다.5 이하의 기본 케이스들을 초기화 해준다.y가 0일땐 h값이 그대로 출력된다.y가 1일땐 h * 1.05을 정수형으로 내림y가 2일땐 y가 1일때 값 * 1.05을 정수형으로 내림y가 3일땐 h * 1.20을 정수형으로 내림y가 4일땐 y가 1일때 값 * 1.20을 정수형으로 내림이후의 값은 for문을 통해 반복처리 해주면 된다. 참고 사항y가 4일때의 케이스가 중요하다, y가 3일때의 값 * 1.05보다 y가 1일때의 값 * 1.20이 더 크다 (왜틀린지 몰랐으나 계산기를 돌려보고 깨달았다.) 정답 코드def q19947():..

SWEA 2805번 D3 농작물 수확하기 파이썬

리뷰1n의 범위가 크지 않아 시간 복잡도를 신경쓰지 않고 풀었다. 문제 풀이입력값을 리스트로 받아온 뒤 개행시킨다.개행시킨 리스트를 map을 통해 int로 변형시키고 리스트로 다시 받아온다.n은 홀수 고정이므로 중앙 인덱스를 초기화 해준다.마름모 꼴의 위쪽 부분과 아래쪽부분의 수확량을 각각의 for문을 통해 구해준다.테스트케이스 번호와 총 수확량을 출력한다. 참고 사항위쪽이나 아래쪽의 for문의 range값을 달리 해줘야 한다. 한쪽은 중앙 인덱스 + 1, 한쪽은 중앙 인덱스 정답 코드def q2805(): # SWEA 2805번 D3 농작물 수확하기 파이썬 t = int(input()) for i in range(1, t + 1): n = int(input()) ..

백준 27396번 파이썬 문자열 변환과 쿼리

리뷰풀이하는데 오랜 시간이 걸렸다... 딕셔너리를 활용하긴 했지만 시간초과를 벗어나진 못했었는데 갑자기 깨달아버려 시도했더니 문제가 풀렸다.문제 풀이a-z, A-Z를 키로 갖는 딕셔너리를 생성해 준다.문자열 변경이 필요할 경우 딕셔너리를 돌아 value값이 일치하면 새로운 value값으로 업데이트 해준다.출력이 필요한 경우 초기 s값을 참조하여 각 단어를 딕셔너리 key를 호출해 value를 한 문자열로 묶어 출력해준다.참고 사항S*N이 최악의 경우 300억으로 모든 케이스를 돌고자 하면 무조건 시간초과가 난다.정답 코드def q27396(): # 백준 27396번 파이썬 문자열 변환과 쿼리 import sys s, n = sys.stdin.readline().split() char..

SWEA 1208번 D3 [S/W 문제해결 기본] 1일차 - Flatten 파이썬

리뷰또 출력할때 테스트 케이스 앞에 #을 넣어주지 않아 오답이 노출되었다... 후문제 풀이상자 정보를 리스트로 받아오고 상자 정보에 부호가 -인 상자 정보 리스트를 추가로 생성한다.상자 정보를 최소힙으로 -인 상자 정보를 최대힙으로 만들어준다.d가 0이 될때까지 while 루프를 돌아주며 만약 최대값과 최소값이 1이내일 경우 루프를 빠져나온다.테스트 케이스와 최대힙과 최소힙의 차이를 출력해 준다.참고 사항힙을 사용하지 않을 경우 시간 초과가 노출되는 것 같다.정답 코드def q1208(): # SWEA 1208번 D3 [S/W 문제해결 기본] 1일차 - Flatten 파이썬 import heapq for i in range(1, 11): d = int(input()) ..

SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬

리뷰최악의 케이스를 봤을때 10 * 1000 * 4로 총 4만이므로 시간이 널널할 것으로 예상되어 시간 복잡도 신경 안쓰고 풀었다.문제 풀이테스트 케이스가 10개이므로 range가 10인 for문을 시작한다.비교하기 쉽게 하기 위해 리스트를 받아올 때 앞 뒤로 0을 2개씩 넣어 주었다.앞 뒤 0이 아닌 범위만 for문을 돌려 현재 위치 기준 좌우 2의 건물 크기중 가장 큰 값을 현재 건물과 비교한다.현재 건물의 크기가 좌우 2 건물의 크기보다 클 경우 result에 그 차이만큼 더해준다.이후 테스트케이스 번호와 함께 result 값을 출력참고 사항없음정답 코드def q1206(): # SWEA 1206번 D3 [S/W 문제해결 기본] 1일차 - View 파이썬 for i in range(1, ..

SWEA 10965번 D3 제곱수 만들기 파이썬

리뷰D3 첫 도전, D3는 적당히 풀 수 있을 것 같아 가장 정답률이 낮은 문제를 택했다. 정답률 13%로 어떤 문제길래 이렇지? 하고 풀어보니 시간초과 파티였다. 딕셔너리를 통해 문제를 풀어 겨우 통과하였다.문제 풀이각 케이스 마다 빈 딕셔너리를 하나 초기화 해준다.현재 수를 소인수 분해 해주고 각 소인수의 지수를 딕셔너리의 value 값으로 추가 해준다.마지막 인자가 소수일 경우 이 또한 딕셔너리에 추가해 준다.거듭 제곱수를 구하는 문제지만 결국 제곱수가 b의 최소값이므로 딕셔너리의 value값이 홀수일 경우 key값을 b에 곱해준다. (소인수한 모든 지수를 짝수로 맞춰주면 해당 값이 거듭제곱 값이 되는 최소값이다.)각 케이스의 정답을 result 리스트에 추가해 주고 마지막에 result 리스트의 ..

백준 3085번 사탕 게임 파이썬

리뷰브루트포스 알고리즘으로 분류되어 있어 for문을 남발했다가 시간 초과를 맞았다, 시간복잡도를 조정하고 제출할때 dist 리스트를 초기화 했던 줄을 지워버려서 NameError까지 떠버렸다... 해당 부분 수정 후 제출 하여 통과하였다.문제 풀이n*n 배열을 전체 탐색할 것이기 때문에 방향은 오른쪽과 아래쪽만 탐색할 것이다. (1, 0), (0, 1) 방향 배열 생성변경할 방향의 좌표값이 n을 벗어나지 않을 경우 서로 내용물을 바꾸어 준다.별도의 함수를 작성하여 바뀐 리스트를 기준으로 행 및 열을 탐색해 준다.이전 인덱스와 동일한 사탕일 경우 temp를 올려주고 temp_max를 최신화 해준다. 아닐경우 temp는 1로 초기화행, 열을 탐색했을때 연속된 사탕의 개수를 return해 준다.최대 사탕 개수..

728x90