학회 때문에 pycaret을 쓰는데 이게 말썽이다.. 정말 pycaret은 좋은 물건?인데 항상 호환이 문제다. 전에 mri분석 때문에 사이킷런 버전을 좀 만졌더니 호환이 안되는 문제가 발생. 사이킷런 버전을 바꾸고 이것저것 해봤더니 또 다른 문제 발생... 그냥 가상환경을 사용하기로 결정. 가상환경 만드는 김에 포스팅도 하기로!! 가상환경은 말 그대로 가상의 환경이다. 나의 사례처럼 여러 프로젝트를 진행하는 사람들이 많을 것 같은데, 그때 마다 버전이 다르면 호환이 되지 않아 버전을 그때그때 갈아엎어야 하는 상황이 발생한다. 가상환경을 만들어서 따로 라이브러리를 관리하면 쉽게 제어 가능하다! - 가상환경 in Jupyter notebook 1. 가상환경 설치 먼저 가상 환경을 설치한다. 어렵진 않고, ..
🐍 Python
📌 문제 📌 풀이 머리가 아프다... 쉬운 난이도 일텐데 ㅜㅜ 우선 분모랑 분자를 따로 보고, 반복 패턴을 확인하면 각각 아래와 같다. 분자 : [1], [1,2], [1,2,3], [1,2,3,4] ... 분모 : [1], [2,1], [3,2,1], [4,3,2,1] ... 먼저 여기서 힌트를 얻기.. 각 리스트의 길이(M)와 1~M의 요소가 리스트에 들어있다는 점. 분모와 분자는 순서차이일 뿐. 중요한 점은 그럼 입력을 받았을 때 몇 번째 리스트에 있는 지를 보는게 포인트. 위 패턴과 순서도 비교해보면? 분자 : [1], [1,2], [3,2,1], [1,2,3,4] ... 분모 : [1], [2,1], [1,2,3], [4,3,2,1] ... 입력 패턴 : [1], [2,3], [4,5,6], [..
📌 문제 📌 풀이 보기엔 어려워 보이는데 결국 나누기 문제이다. 가장 편한 풀이는 아래와 같다 T = int(input()) for t in range(T): C = int(input()) Quarter = C // 25 Dime = (C - 25*Quarter) // 10 Nickel = (C - 25*Quarter - 10*Dime) // 5 Penny = C - 25*Quarter - 10*Dime - 5*Nickel print(Quarter, Dime, Nickel, Penny) 정말 간단히, 금액에서 쿼터로 나눈 몫을 반환, 금액에서 쿼터를 빼고 이를 다임으로 나눈 몫을 반환하고 .... 이를 반복하는 것 근데 아무리 봐도 이런 접근이 아닐 것이란 생각이 들었다... 어처피 같은 걸 반복하는건데..
📌 문제 📌 풀이 거창해서 어려워 보이는데, 굉장히 쉽다. 먼저 base로 0으로 이루어진 100 x 100의 행렬을 만들고 입력받은 행과 열에 각각 +10을 해서 해당 범위 안의 값을 1로 만들면 된다. 마지막으로 모든 행렬의 1값들을 더해주면, 겹치는 부분도 어처피 1이 되니까 넓이를 구할 수 있다. 위 그림 처럼 실제로 0과 1의 세계에서 구현하면 되는것.. base = [[0 for _ in range(100)] for _ in range(100)] score = 0 num = int(input()) for i in range(num): paper = list(map(int, input().split())) for j in range(paper[1], paper[1]+10): for k in ra..
📌 문제 📌 풀이 쉬웠는데 어이없는 실수로 계속 틀린문제... 아무리 봐도 아 뭐가 틀린거야!!! 하다가... 아래 코드에서 길이를 리스트에 더하는걸로 바꿨는데, 원래는 len(max(matrix))를 사용했다. 이때 max는 문자열에서는 사전순으로 정의된다는 점 ㅜㅜㅜ 이걸 까먹고 있었다.. matrix= [] length = [] word = '' for i in range(5): row = input() length.append(len(row)) matrix.append(row) for j in range(max(length)): for k in range(5): if j < length[k]: word += matrix[k][j] print(word)
📌 문제 📌 풀이 map() 함수를 꼭 외워놔야한다. 유용하니..(애초에 숫자는 int로 들어가게 해주세요오) 행과 열의 개수를 받고 빈 리스트 2개 생성. 행의 수만큼 반복하면서 각각 행렬 2개를 받은 후, 각 행의 각 열 단계로 반복하면서 요소들을 더하면 끝 A, B = map(int, input().split()) matrix1, matrix2 = [],[] for i in range(A): row = list(map(int, input().split())) matrix1.append(row) for j in range(A): row = list(map(int, input().split())) matrix2.append(row) for row in range(A): for col in range(B..
📌 문제 📌 풀이 단순한 연산이라.. 쉬웠는데 단순한 연산일 수록 계산 실수가 많은 법 ㅋㅋ 계속 제대로 했는데 왜 안되지!! 하다가 전공 평점 계산하는 법을 잘못 하고 있더라구요.. 문제나 제대로 읽을 걸 그랬습니다.. 먼저 등급별 리스트와 해당 학점의 점수 리스트를 만들고 과목명, 학점, 등급을 input으로 받았을 때 등급이 P면 아무 의미 없어서 continue로. F도 리스트안에 포함되어 있어서 상관없고 등급별 점수랑 학점 곱한 값 subject_score에 넣어주고 그냥 학점 값 grade_score에 넣어주고 연산만 하면 끝! # 25206번 grade_list = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F'] score_list = [4.5..
📌 문제 📌 풀이 연속인 단어라 해서 알파벳이 연속인걸 말하는건가...? 했는데 잘 읽어보니 그냥 같은 알파벳이 연속으로 나오는게 아니라 몇단어 뒤에 다시나올 경우 그룹단어가 아니라고 접근하면 될거같더군요. 계속 틀리길래 찾아보니까 오탈자 발견.... 단어의 각 알파벳마다 만약 바로 다음 알파벳과 같다면 그룹 단어 조건에 충족하니까 패스 이외 다음 알파벳을 제외하고 뒤에 또 다시 해당 알파벳이 나온다면 그룹 단어가 아니기 때문에 총 단어수에서 빼기 1 times = int(input()) N = times for i in range(times): word = input() for j in range(0, len(word)-1): if word[j] == word[j+1]: pass elif word[j]..
📌 문제 나의 풀이 문제를 보는데 사실 의아했습니다. 정수의 개수를 왜 입력으로 받지..? 굳이 필요없을 것 같은데.. 라는 의문으로 우선은 정수의 개수를 사용하는 풀이를 만들어 보고자 했습니다. # 10818번 N = int(input()) L = list(input().split()) for i in range(N): L[i] = int(L[i]) print(min(L), max(L)) 이렇게 하면 풀수는 있으나 아래 처럼 간단하게 함수로 가능하죠. 리스트로 우선 받고, 문자열은 for문에 맞추어 하나하나 int로 바꾸어 주는 겁니다. ➕ 더 좋은 풀이 그냥 아래와 같이 3줄안에 가능합니다. # 빠른 풀이 N = int(input()) I = list(map(int, input().split())) ..
📌문제 나의 풀이 파이썬을 한지 좀 되서.. R이랑 코드가 헷갈려서 좀 걸렸지만 해결은 했습니다! # 2753 윤년 A = input() x = int(A) if x % 400 == 0: print(1) elif x % 4 == 0 and x % 100 != 0: print(1) else: print(0) 이렇게 풀었는데 아래처럼 한줄로도 해결가능하더군요. # 2753 윤년 ver2 A = input() x = int(A) if x % 4 == 0 and x % 100 != 0 or x % 400 == 0: print(1) else: print(0) ➕더 좋은 풀이 : 삼향연산자 더 좋은 풀이가 있나 하던중에 삼향 연산자라는 걸 찾았습니다. 분명 예전에 배운 기억이 있는데 하도 오래되어서 기억이 안나더라..