반응형

알고리즘 5

알고리즘) 백준 8958번 OX  퀴즈

오 한방에 성공해서 짱 기분 좋슴니다 하하하 안될줄 알았는데 답 안보고 풀어보자 해서 풀었습니다 굳굳 시간도 얼마 안걸렸어요 헤헤 이렇게 로직을 만들어줍니다. 두번째에서 O가 나올 때 더해주는 포인트에 1점을 누적시켜주고, X가 나오게 되면 포인트를 초기화해주는 방식이죠. 로직은 다음과 같습니다. 그럼 이제 백준에서 요구하는 input의 조건에 대해서 알아보겠습니다. 처음에 제공되는 숫자는 앞으로 받을 문자열의 갯수입니다. 그 숫자를 반복문을 돌릴 갯수로 지정해주고 input을 받음에 따라 로직을 실행하는 방법을 사용했습니다. 저번에도 언급했듯이, 백준에서는 input보다는 sys.stdin.readline()을 사용해주는 것이 처리속도 면에서 월등하니 후자를 사용하는 것을 추천합니다. 혹시 런타임 에러..

알고리즘 2020.01.21

알고리즘) map 함수를 사용하여 자릿수 나누기

map 함수를 사용하여 자릿수를 나누어 보겠습니다. a = 1234 라면, a = [1, 2, 3, 4] 로 만들려면 map 함수를 사용하는 것이 제일 빠르고 효과적입니다. a = 1234 b = list(map(int, str(a))) 어디서든 유용하게 쓰일 함수입니다! :) 더 좋은 방법을 알아냈습니다. 처음에 받으면 string으로 input을 받게 되어서 리스트 형식이 아니라도 인덱스 참조가 가능하더라구요. a = 1234 a[0] = 1 a[1] = 2 ... 이런식으로.. 그렇게 되면 p = int(a[0]) 이렇게 간단하게 형변환 해주면 처리속도도 그렇고 훨씬 간편하고 빠르게 사용할 수 있겠습니다. 왜 난 이걸 이제 알았지ㅠㅠ for 사용해서 리스트에 append로 하나하나 넣는 삽질을 해야..

알고리즘 2020.01.14

알고리즘) a와 b의 대소 관계에 상관없이 사이의 모든 정수 합 구하기

이번에는 a와 b의 대소 관계에 상관없이 사이의 모든 정수 합 구하기를 한번 해보겠습니다. 우선 시작하기에 앞서, 1부터 10까지의 정수의 합을 구해보겠습니다. 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 이 경우의 답은 모두들 알다시피 55입니다. 이 방식을 while을 사용해서 코드화 해보자면, int n = 10; int i = 1; int sum = 0; while ( i

알고리즘 2020.01.13

알고리즘) 세 정수 중앙값 구하기

일반 세 정수의 중앙값 구하기 알고리즘입니다. 일반 세개의 정수를 나열한다고 가정했을 때, 나올수 있는 경우의 수를 결정 트리(decision tree)로 표현한다면 아래와 같이 표현할 수 있겠습니다. 여기서 세 정수를 a, b, c로 가정하겠습니다. 여기서는 자바로 표현됩니다. 수가 같을 경우를 가정한다면 경우의 수가 더 늘어나게 되죠. 이를 살펴보겠습니다. 어차피 수가 같다고 가정하더라도, 수는 나열될 수 밖에 없습니다. a와 b가 같다고 가정해도 어차피 중앙값만 돌려받기 때문에 a b c 나 b a c인 경우 중앙값은 같게 되는 것이죠. 이럴 경우 나올수 있는 경우의 수는 여섯가지가 됩니다. 이 경우에서, c를 기준에 따라 위치시켜봅시다. 1. a가 b보다 큰 경우 (a > b) a는 무조건 b보다..

알고리즘 2020.01.08
반응형