일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Join
- 파이썬 슬라이싱
- Django
- YOLOv5
- python
- 데이터
- date_format
- 파이썬
- 파이썬 몫
- count
- Len
- 코딩테스트 연습
- css
- 아이엠어바텐더
- GIT
- 단어 공부
- 프로젝트
- 프로그래머스
- html
- Python3
- map
- 설계
- List Comprehension
- 백준
- 슬라이싱
- ORDER BY
- SQL 고득점 Kit
- pcce 기출문제
- where
- sql
- Today
- Total
목록Python/백준 알고리즘 (68)
nan + nan = 2nan
코드 입력 def solve(a): ans = 0 for i in a: ans += i return ans 갑자기 안 쓰던 함수를 오랜만에 써보려고 하니 머리가 아팠다. 장고 블로그 만들 때, views.py 안에 def 함수를 이용해서 옮겨 붙일 때 많이 접했는데, 강의 들었던 기억이 잘 기억이 나진 않는 것 같았다.. 그래서 살짝 쫄았는데, 문제 자체는 가벼웠다. 나는 단계별 문제라서 뒤로 갈수록 어렵기 때문에 무엇을 꼬아놓았을까 이것저것 살펴보고 jupyter lab으로 막 돌려봐도 def 함수를 사용하니 답이 안 나왔다. 이유는 잘 모르겠다.. 답답해서 그냥 백준 들어가서 제출을 누르니 def solve(a): ans = 0 return ans 해당 형태를 기본적으로 제공했다. 그래서 그냥 안에 ..
코드 입력 ##### float 사용하는데, 소수점 셋째 자리까지 출력하는 방법을 생각해봐야 한다. N = int(input()) for i in range(N): score = list(map(int, input().split())) avgsum = sum(score[1:]) / len(score[1:]) cnt = 0 # for i in score[1:]: # float 인 avgsum 과 list인 score[1:]을 비교할 방법. if i > avgsum: cnt += 1 # else: # cnt = 1 rate = cnt / score[0] * 100 print(f'{rate:.3f}%') 이전에 풀었던 OX문제와 비슷한 양상이다. 처음에 입력할 학생 수를 int(input())으로 출력한다. ..
코드 입력 N = int(input()) # O가 연속한 개수에 따라 출력값을 설정 # ex) O 1개 = 1 , 2개 = 1 + 2, 3개 = 1 + 2 + 3 for i in range(N): answer = list(input()) sum = 0 pls = 1 for i in answer: if i == 'O': sum += pls pls += 1 else: pls = 1 print(sum) 식에 대한 구상은 머릿속에 세워놨는데, 이걸 어떻게 구현할지 의문이어서 타 블로그를 보고 참조해봤다. 항상 답변 개수를 입력하고 사용하지 않아 N을 받아 반복문으로 돌려주고, 그 안에서 answer라는 입력값을 받을 리스트를 만들어줬다. 그리고 각 값들을 다 넣어줄 sum과 개별 연속 문자의 합 'O'를 넣어줄..
코드 입력 N = int(input()) score = list( map( int, input().split() ) ) M_score = max(score) result = [] for i in score: result.append( i / M_score * 100 ) print(sum(result) / len(result)) 일단 문제부터 길다.. 과목 수는 사실상 보여주기 같다. 따로 사용할 일이 없고, score를 map과 int를 사용해 입력을 받고, list 형태로 감싸준다. 그리고 최대값을 max()를 이용해 미리 구해놓고, 새로운 값들을 입력할 list인 result를 생성한다. 그리고 for 반복문을 통해 score 내 점수들을 반복해서 해당 식에 적용시킬 수 있게 append를 사용한다...
코드 입력 # 10개 다른 수 입력 # 연산 값 중 서로 다른 값이 몇 개 있는지 출력 a = int(input()) % 42 b = int(input()) % 42 c = int(input()) % 42 d = int(input()) % 42 e = int(input()) % 42 f = int(input()) % 42 g = int(input()) % 42 h = int(input()) % 42 i = int(input()) % 42 j = int(input()) % 42 n_li = [a,b,c,d,e,f,g,h,i,j] set1 = set(n_li) n_list = list(set1) size = len(n_list) print(size) 뭔가 간소화할 수 있는 방법이 있겠지만, 아직 내 역량 부..
코드 입력 a = int(input()) b = int(input()) c = int(input()) t = list(str(a*b*c)) for i in range(10): print(t.count(str(i))) 상당히 나에겐 난이도 있는 문제였다. 특히 아직도 list와 str, int 개념에 대해 헷갈려하는 나에게 30분 이상을 소모하게 한 문제.. 처음 a,b,c를 각각 입력받고 입력받은 수들의 곱을 문자열로 치환한 다음, 다시 리스트로 묶어준다. 그렇게 되면 처음 곱한 수들이 문자열로 묶이고, 리스트에 넣으면서 각 자리 수마다 문자열로 인식이 되어 리스트에 저장이 된다. 그럼 이제 for문을 사용해 0 ~ 9까지의 i를 만들어주고, count라는 함수를 이용해 문자열로 치환한 i가 리스트의 각..
코드 입력 n_li = [ ] for i in range(1, 10): n_li.append( int( input() ) ) print(max(n_li)) print( n_li.index( max( n_li )) + 1 ) index 접근 했는데,. list에 대한 개념이 너무 부족하다. n.li라는 리스트 변수를 만들고, for문을 활용해서 9번 반복하는 알고리즘을 만든다. 그 다음, int(input())을 리스트에 append 해주는 방식. 나는 처음부터 list ( map ( int ... 이런 식에 꽂혀서 오류가 너무 많이 발생했다. 무튼 그렇게 max값은 자연스레 만들어주고, index라는 위치 반환 함수를 이용해 위치를 표현한다. 단, 0부터 시작하기 때문에 index값에 1을 더해준다. 조..
코드 입력 n = int( input() ) number = list( map( int, input().split() ) ) print( min(number), max(number) ) 굉장히 간단한 코드지만, 처음엔 좀 헷갈렸다. n과 number를 출력하고 min과 max를 쓰는 것까지는 어느정도 뽑아냈는데, 아직 확실히 list, int, str 에 대한 감이 부족한 것 같다. 처음엔 number에 list를 달지도 않았고, for 문을 사용해서 해야하나도 고민했다. 근데 그냥 간단했다. number 에 list 없이 jupyter로 출력을 해보니 16진수로 출력이 되었다. 그래서 list를 하는건가? map과 int로 정수형으로 만들어 list로 출력한다라고 생각해야겠다. 출처 : 백준 Onlin..
코드 입력 N = int(input()) count = 0 cf = N while N < 100: T = (N // 10) + (N % 10) # 8 2 6 New = (N % 10) * 10 + (T % 10) # 68 6 X 10 + 8 count += 1 N = New if New == cf: break print(count) 얼른 풀고 맥주 먹고 잘라 그랬는데 1시간을 소모한 문제.. 문제를 읽고 어느정도 로직은 머릿 속에 그려졌지만, formatting과 try / except, 정말 여러가지 방법을 사용해보았지만 무한반복에 빠지거나 머리가 빠지거나 둘 중 하나 결국 참조를 해보았다. count와 N에 동등한 값을 갖는 새로운 변수를 생성하는 것이 답이었다. 26 이라면, 2 + 6 = 8 이고..
코드 입력 while True: try: A, B = map(int, input().split()) print(A + B) except: break 자꾸 막혀서 결국 또 구글링.. 까먹고 있었던 것을 떠올릴 수 있었다 try 와 except 많이 다루질 않아서 익숙하지 않았는데, 복습을 하면서 보니 반가웠다 try에는 반복문의 내용을 계속 시도하고, 만약 오류가 발생할 경우 (예를 들어 a,b를 입력해야 하는데 a만 입력한다던가....) 해당 알고리즘을 멈추게 하는 로직이 구성된다. 출처 : 백준 Online Judge https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acm..