전체 글

바쁜 새벽(busymidnight)을 살아보고자 만든 블로그
문제 설명 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. 입력 첫째 줄에는 테스트 케이스의 개수 C가 주어진다. 둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다. 출력 각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다. 풀이 n = int(input()) for _ in range(n): std_list = list(map(int, input().split())) stdnum = std_list[0] sum_std = sum(std_list) - ..
글을 시작하며 코딩테스트를 처음 입문하기 전에 필수로 풀어보면 좋은 코드업의 파이썬 기초 100제가 있다 혹시 모른다면 정말 강추!이니 꼬옥 풀어보길 바란다. 기초를 다잡기에 아주 좋다. https://codeup.kr/problemsetsol.php?psid=33 문제집 / Python 기초 100제 codeup.kr 수행 시간은 중요하다 코딩테스트 문제를 풀어본 사람이라면 수행 시간이 오래 걸려 통과하지 못한 경험이 있을 것이다. 당연함! 코딩테스트는 답만 나오면 장땡!이 아닌 그 풀이 과정의 중요도 역시 상당한 시험이기 때문이다. 풀이에 사용하는 알고리즘에 따라 수행 시간을 많이 단축시킬수 있고, 그래서 코딩테스트 공부는 알고리즘 공부와 꼭 병행되어야 한다. (필자도 학부시절..이후로 오랜만에 알고..
문제 설명 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 (1) 첫번째 접근 sort해서 갯수 세면 되지 않을까? 했는데 두번째 조건이 걸렸다. 가장 많이 사용된 알파벳이 여러개인 경우를 체크하려고 고민을 좀 했다. (2) 최종 풀이 문자열을 set(), 집합으로 만들고 list에 넣었다. 1. set은 순서가 없다. 2...
비트단위(bitwise) 연산자 연산 결과 x | y x 와 y 의 비트별 or x ^ y x 와 y 의 비트별 배타적 or (exclusive or) x & y x 와 y 의 비트별 and x n x 를 n 비트만큼 오른쪽으로 시프트 ~x x 의 비트 반전 예1) 1은 00000000 00000000 00000000 00000001 이고, ~1은 11111111 11111111 11111111 11111110, 즉 -2다. ~n = -n - 1 의 관계가 존재함을 알아두자! 예2) 3과 5가 입력되었을 때를 살펴보면 3 : 00000000 00000000 00000000 00000011 5 : 00000000 00000000 00000000 00000101 3 | 5 : 00000000 00000000..
문제 설명 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는지 ..
네.. 저는 몰랐습니다. 그래서 정리합니다. 파이썬 내장함수 any와 all은 어떤 함수일까요? 이럴땐 바로 파이썬 공식문서를 들어가서 확인해봅시다. any(iterable) : iterable의 요소 중 어느 하나라도 참이면 True 반환 iterable 객체 == 반복 가능한 객체 대표적으로 iterable한 타입 - list, dict, set, str, bytes, tuple, range iterable이 비어있으면 False 반환 any는 이렇게 생겼습니다. iterable한 타입을 순환하면서 참이 있는지 확인할 때 유용할 것 같습니다. def any(iterable): for element in iterable: if element: return True return False all(iter..
문제 알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오. 팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다. level, noon은 팰린드롬이고, baekjoon, online, judge는 팰린드롬이 아니다. 입력 첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다. 풀이 (1) 나의 풀이: deque의 pop(), popleft()를 사용해서 팰린드롬인지 판단했다. from collections import deque s=list(input()) dq = deque(s) def find(dq):..
문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 풀이 (1) 자연수를 문자열로, 문자열을 리스트로 바꾼 후 reverse 함수를 사용. def solution(n): arr = list(map(int, str(n))) arr.reverse() return arr (2) 더 간단한 풀이 : 내장함수인 reversed를 이용하면 코드 한 줄로 해결이 가능하다. def solution(n): return list(map(int, reversed(str(n))))
쁜새
(안)게으른 블로그