📌 문제 📌 풀이 거창해서 어려워 보이는데, 굉장히 쉽다. 먼저 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..
벌써 석사 3년차이다. AI에 관심을 가져 공부한지 약 1년반? 정도 된 것 같다. 처음에는 그냥 막연하고 이게 뭐지 했지만, 기본을 좋아하는 나의 특성상 심리학과지만 학부 막학기 때 선형대수학 수업을 들으며 A+를 받고 이해하려고 노력했고 결국 받아냈다. 이때의 성취감이 지금의 나까지 오게 만든 것 같다. 그 후 대학원에 입학하고, 교수님의 반대에도 꼭 머신러닝을 이용한 연구를 하고 싶었다. 결국 시작하긴 했는데 왜 반대했는지 알 것 같았다. 우선 심리학과가 매우 좁다. 이 좁다는 의미가 바라보는 시선이 매우 폐쇄적인다(나만의 생각일 수 있다.) 물론 나쁜 것 만은 아니다. 심리학 분야에 기계학습과 빅데이터 관련한 연구가 국내에선 오래되지 않았고 그저 '한번 써봐야지'라는 의미로 나온 연구도 많다. 때..
📌 문제 📌 풀이 단순한 연산이라.. 쉬웠는데 단순한 연산일 수록 계산 실수가 많은 법 ㅋㅋ 계속 제대로 했는데 왜 안되지!! 하다가 전공 평점 계산하는 법을 잘못 하고 있더라구요.. 문제나 제대로 읽을 걸 그랬습니다.. 먼저 등급별 리스트와 해당 학점의 점수 리스트를 만들고 과목명, 학점, 등급을 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) ➕더 좋은 풀이 : 삼향연산자 더 좋은 풀이가 있나 하던중에 삼향 연산자라는 걸 찾았습니다. 분명 예전에 배운 기억이 있는데 하도 오래되어서 기억이 안나더라..
📌 문제 📌 나의 풀이 문제를 푸는데 어려움은 없었으나, 마지막 print()부분에서 좀 더 효율적으로 값을 내는 법이 있을까 싶더군요. # 10430번 A, B, C = map(int, input().split()) print((A+B)%C) print(((A%C)+(B%C))%C) print((A*B)%C) print(((A%C)*(B%C))%C) ➕ 더 좋은 풀이 : sep = '\n'사용 문제를 풀어보다가 print를 저렇게 나열하는 거 보다 분명 좋은 방법이 있을 텐데.. 고민하다 그냥 해봤는데요 역시 찾아보니 좋은 풀이가 있더라구요. 바로 \n 사용하기. 기본적으로 줄바꿈이 \n입니다. 그러니까 엔터를 표현한 값이죠. 이것을 print()에 넣어주면 되더라구요! A, B, C = map(int..
우리가 예측을 할 때, 예측력이 높은 것도 중요하지만 주제와 목적에 따라 모델의 내부 메커니즘을 이해하는 것도 중요할 수 있습니다. 모델이 어떻게 특정 변수에 의존하는지, 즉 특정 input과 output간의 관계가 어떻게 이루어져 있는지 이해하는 것이 모델을 해석하는 데 중요할 수 있가다는 것입니다. 이러한 맥락에서 부분 의존성 플롯(PD)와 개별 조건부 평균 플롯(ICE)은 중요한 역할을 할 수 있습니다. 부분 의존성 플롯(PD)는 데이터 세트 내의 하나 또는 두 개의 특성과 예측 결과 사이의 관계를 시각화 합니다. 특정 특성의 다양한 값들이 예측 결과에 어떻게 영향을 미치는지 보여줌으로써, 모델이 특성을 어떻게 해석하는지에 대한 통찰력을 제공합니다. 반면, 개별 조건부 평균 플롯(ICE)는 각 관측..