전체 글 185

[브론즈 IV] 10162번. 전자레인지

문제 https://www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 사용 언어 Python3 풀이 과정 채점이 좀 오래걸렸지만 한 번에 뜬 맞았습니다!! 문제에 서브태스크라고 써져 있길래 뭐지 했는데 T의 길이에 따라 출제한 3문제에 소요한 메모리와 시간을 각각 보여주었다. 이렇게 보여주니깐 좋네. 쉬운 문제라 깔끔하게 풀었다고 생각하지만 혹시 몰라 다른 사람들 풀이도 찾아보았는데 다들 비슷하게 푼 것 같다. 제출 답안 T = int(input())..

[실버 IV] 1475번. 방 번호

문제 https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 사용 언어 Python3 제출 답안 N = list(input()) # 방 번호 9999 num_set = list(range(10)) current_set = [] count = 0 while(len(N)>0): # 4 num = int(N.pop(0)) # 9 if num in current_set: # 있으면 current_set.remove(num) # 숫자 사용 else: # 없으면 if num == 6: if 9 in current_set: current_set.remove(9)..

[실버 IV] 2108번. 통계학

문제 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 사용 언어 Python3 풀이 과정 가장 문제가 되는 최빈값을 count함수를 사용해 풀었고 IDE에서는 정답이 출력되는 것을 확인했으나 백준에서는 시간 초과가 떴다. 찾아보니 count 함수는 시간복잡도가 O(n)인데 for문 안에다 써서 시간복잡도가 O(n^2)이나 된 것 같다... 출처: https://hyun-am-coding.tistory.com/entry/Python-list-%EC%97%B0%..

실습으로 배우는 파이썬 下 (클래스~응용편)

[08 클래스] 클래스(class) 하나의 클래스를 가지고 여러 개의 객체를 만들 수 있음 만들어진 객체들은 서로 아무런 영향을 주지 않음 클래스 멤버 : 클래스에서 변수와 같은 역할 클래스 메소드: 클래스에서 함수와 같은 역할 class MyClass: var = '클래스 멤버' def func(self): print('클래스 메소드') - 파이썬에서 클래스 메소드의 인자는 self를 관습적으로 사용해 객체를 전달 클래스 멤버와 인스턴스 멤버 클래스 멤버 : 객체간 서로 공유되는 변수 인스턴스 멤버 : 객체별로 고유한 값을 저장하는 변수 인스턴스 멤버는 self.멤버이름을 통해 선언할 수 있음(특정 객체의 멤버이기 때문에 이러한 형식으로 선언) class KiaK3: brand = '기아' #클래스 멤..

[브론즈 III] 3009번. 네 번째 점

문제 https://www.acmicpc.net/problem/3009 3009번: 네 번째 점 세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오. www.acmicpc.net 사용 언어 Python3 제출 답안 import sys x = [] y = [] for _ in range(3): temp = sys.stdin.readline().strip().split(' ') x.append(temp[0]) # x좌표끼리 y.append(temp[1]) # y좌표끼리 # 나머지 x좌표 구하기 if (x[0] == x[1]): res_x = x[2] else: if (x[1] == x[2]): res_x = x[0] else: res_x = x[1] ..

[브론즈 II] 14561번. 회문

문제 https://www.acmicpc.net/problem/14561 14561번: 회문 n진수는 base가 n인 수를 말한다. 예를 들어 십진수는 base가 10인 수이다. n진수의 수 AmAm-1Am-2…A1A0를 n진수로 표현해보면 AmAm-1Am-2…A1A0 = Am × nm + Am-1 × nm–1 + Am-2 × nm–2 + … + A1 × n1 + A0 × n0이다. www.acmicpc.net 사용 언어 Python3 풀이 과정 처음 풀었던 코드이고 예제 입력 시 출력은 맞았는데 제출했더니 틀렸습니다! 어디가 잘못된 건지 테스트 케이스를 changeNum 함수에 대입해 직접 출력한 거랑 계산기 값이랑 비교해봤는데 16진수 변환 시 HEX 값은 '53A69'지만 내 코드에서는 '53106..

실습으로 배우는 파이썬 上 (프로그래밍 첫발 내딛기~모듈)

[01 프로그래밍 첫발 내딛기] 파이썬 예약어 파이썬 예약어는 변수명으로 사용할 수 없음 예약어 확인 명령어 import keyword print(keyword.kwlist) ''' ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'] ''' [02 조건문, 반복문] ..

[브론즈 II] 2577번. 숫자의 개수

문제 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 사용 언어 Python3 제출 답안 import sys a = int(sys.stdin.readline()) b = int(sys.stdin.readline()) c = int(sys.stdin.readline()) mul = str(a * b * c) arr = list(range(0, 10)) for i in arr: print(mul.count(str(i))) 공부한 내용 range를 사용하여 리스트 만들기 range는 연속된 숫자를 생성하..

[브론즈 II] 2775번. 부녀회장이 될테야

문제 https://www.acmicpc.net/problem/2775 2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 사용 언어 Python3 풀이 과정 재귀로 풀었고 IDE에서는 정답이 출력되는 것을 확인했으나 백준에서는 시간 초과가 떴다. import sys t = int(sys.stdin.readline()) # Text case의 수 , 2 j = 0 result = [] def people(a, b):# 몇 층이든 b호까지밖에 없음 total = 0 if (a == 0): # 0층의 b호에는 total = b # 총 b명이 산다 else:..

SQL로 데이터 다루기 I

01 SQL 시작하기 데이터베이스 데이터베이스는 다양한 종류가 있지만 가장 많이 사용되는 종류는 관계형 데이터베이스와 비관계형 데이터베이스 그중에서도 SQL은 관계형 데이터베이스에 사용(SQL을 통해 제어 가능) 관계형 데이터베이스란 하나 이상의 테이블로 이루어지며 서로 연결된 데이터를 가지고 있음 비관계형 데이터베이스는 데이터들이 연결되지 않음 데이터베이스란 테이블들이 모여있는 집합 테이블의 전체 구조를 확인하려면 DESC 명령어 사용 대개 컬럼은 주제, 제목을 의미하고 레코드는 내용과 값을 포함함 뒤에 나오는 컬럼의 중복을 제거하기 위해 DISTINCT 명령어 사용 distinct 뒤에 2개 이상의 컬럼을 적을 때 한 쪽 컬럼에 중복이 있어도 다른 쪽 컬럼의 값이 다르면 다르게 취급하여 출력함 데이터..

[실버 IV] 9012번. 괄호

문제 https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 사용 언어 Python3 제출 답안 t = int(input()) # 몇 줄을 입력받을지 result = [] # 결과 리스트 for i in range(t): vps = input() # 검사할 괄호 문자열 ls = list(vps) # 리스트로 변환 checksum = 0 # vps 구분 for j in ls: if j == "(": checksum += 1..

[브론즈 II] 10809번. 알파벳 찾기

문제 https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 사용 언어 Python3 제출 답안 S = input() alphabet = list(range(97, 123)) # 알파벳의 ASCII 코드 숫자 범위 for i in alphabet: print(S.find(chr(i)), end=' ') 공부한 내용 chr 함수 아스키코드에 해당하는 숫자를 문자열로 변환시키는 함수 find 함수 - 첫 번째 인자 : 찾을 문자열 혹은 찾을 ..

도레미 파이썬 Vol.2

[01 기초 자료형 II] 문자열/리스트 활용 list.pop(i) : 인덱스 i의 원소를 제거 후 그 원소를 반환(return), 괄호를 비울 시 마지막 원소를 제거 seq.count(d) : 시퀀스 내부의 자료 d의 개수를 반환 my_seq = [2,2,2,4,4] print(my_seq.count(2)) # 3​ str.split(c) : c를 기준으로 문자열을 쪼개서 리스트로 반환, 괄호를 비울 시 공백이 기준 my_str = "1 2 3 4 5" prin(my_str.split()) # element = "Na, Mg, Al, Si" print(element.split(',')) #​ str.join(list) : str을 기준으로 리스트를 합쳐서 문자열을 반환, 괄호를 비울 시 공백이 기준 m..

도레미 파이썬 Vol. 1

* 정확히 기억할 것과 추가로 찾아 본 내용만 정리 [01 기초 자료형: Python으로의 초대] 리스트 리스트는 여러 자료를 보관하는 자료형 다른 종류의 자료를 함께 담을 수 있음 자료 안에 순서가 있음 두 리스트를 +로 이을 수 있음 ex) print([20, 40] + [30]) # [20, 40, 30] 주석 한 줄은 # 여러줄은 '''~''' 혹은 """~""" 변수 이름 규칙 숫자로 시작하면 안 됨 숫자로만 구성되면 안 됨 파이썬 문법에서 사용되는 예약어 공백 문자와 연산자 사용 금지 슬라이싱 index를 이용해서 리스트나 문자열의 일부분을 잘라서 가져오는 방법 ex) print(elephant[2:4]) # eph 리스트를 슬라이싱하면 리스트로 반환하고 문자열을 슬라이싱하면 문자열로 반환함 ..

엘리스 플랫폼 단축키 정리

엘리스 플랫폼 환경의 에디터 단축키가 sublime으로 되어 있는 것을 확인하고 Sublime Text의 단축키를 찾아보았다.(원한다면 emacs나 vim 등으로 변경 가능하기도 했다) 모든 단축키가 그대로 적용되진 않아서 엘리스 플랫폼에 맞게 수정하고 자주 쓸 것들만 추려보았다. 단축키를 숙지하여 마우스 사용을 줄여보자! 한 단어 선택 : Ctrl + D 한 줄 복사 : Ctrl + Shift + D 한 줄 삭제 : Shift + Delete 마우스 다중 선택 : Ctrl + 마우스선택 단어 단위 이동 : Ctrl + left / right 단어 단위 드래그 : Ctrl + Shift + left / right 줄 단위 이동 : Ctrl + Shift + Up / Down 검색(search) : Ctr..