목록알고리즘/백준-Python (11)
언젠간 진화하겠지!
https://www.acmicpc.net/problem/4153 4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 브론즈 3문제임에도 불구하고, 이걸 무려 5번 틀렸는데 이유가 뭐냐면, 예제에서 길이가 오름차순이라 당연히 a
https://www.acmicpc.net/problem/1934 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제를 풀 떄 어떻게 다가가야 하는 걸까 싶을 때 아래 알고리즘 분류에 유클리드 호제법(난생 첨 들어봄)이 있는 걸 보고 검색해보았다. https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95 유클리드 호제법 - 위키백과, 우리 모두의 백과사전 유클리드 호제법(-互除..
https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 생각 보다 쉬웠는데 에러먹어서 어쩌다 2가지 방향으로 코드를 짰다. 둘다 리스트를 이용하는 건 동일하다. 꼭지점에 해당하는 세 점이 입력이 되면 남은 하나를 찾아주는 그런 내용인데, 다들 같은 숫자가 2개씩있는 반면, 남은 하나에 해당하는 숫자만 1개씩만 카운트 된다. 그걸 이용해서 코드를 짰다. 1번째코드 li=[] lis=[] for i in range(3): (x,y)=map(int,input().split()) if x in li: li.remove(x) else: li..
https://www.acmicpc.net/problem/10988 10988번: 팰린드롬인지 확인하기 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net 우선 문자열의 길이가 짝수인지 홀수인지 고려하였다. 짝수일 경우는 나누기 2했을 때 짝의 갯수가 맞지만 홀수는 아니니까! 홀수는 range를 총 문자열의 길이/2+1을, 짝수는 /2를 하였다. 맨 처음과 맨 끝부터 비교를 해서 같다면 count의 값을 1씩 추가하는 형식으로 코드를 짰다. 어떤 사람은 나보다 코드가 짧길래 구경갔더니, list를 이용했더라. 나처럼 경우를 2개를 쪼개지도 않았고.. 나중에 좀 더 실력이 는다면 다시한번 코드를 짜봐야겠다..
https://www.acmicpc.net/problem/7567 7567번: 그릇 그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. www.acmicpc.net 처음에는 뭐 '()' ')(' 이거 빼고 세기 이렇게 하다가 틀렸는데, 그 이유는 접시가 겹쳤을 때 걔네들의 높이를 고려하지 않았기 때문에 틀렸던 것이었다. 저 때는 졸려서 그렇다 치고, 자고 일어나서 생각해보니 아래와 같았다. 초기값을 10으로 주고 앞의 문자가 지금의 문자가 같다면 5를 더하고, 아니면 10을 더하면 그릇의 높이를 셀 수 있었다. 두 번 생각 해보면 답을 도출할 수 있다!..
https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 제법 웃긴얘기... 이거 오늘 다시 풀었는데 못 풀었다... 예전의 나 천재가 아니였을까? 어케 저런생각을 하지? 아님 생각이 한쪽으로만 굳었나? 8일전엔 잘했잖아!왜 그런거야... 리스트 2개쓰지말자 란 생각에 갇혀서 망한듯... 이전 코드↓ li=list() for i in range(10): aa=int(input()) aa=aa%42 li.append(aa) for i in range(42): ab=li.count(i) if ab>1: for _ in rang..
https://www.acmicpc.net/problem/1173 N,m,M,T,R=map(int,input().split()) x=m nn=0 count=0 while True: if x+TM: x=x-R count+=1 if count==1:#유의해야함~!! print(-1) break if xM 이고 count가 1이 될 때(정상적으로 돌아간다면 무조건 처음 if절인 x+T
https://www.acmicpc.net/problem/1159 1159번: 농구 경기 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작 www.acmicpc.net a=int(input()) li=[] cc=0 for _ in range(a): b=input() li.append(b)#입력한거 list에 추가 for i in range(97,123): count=0 for ii in li: if ii.startswith(chr(i)):#만약 chr(i)로 시작하는 ii라면 count+1 count=count+1 if cc=5: print(chr(i),end='')#..