728x90

프로그래밍 51

[python] 백준 11908 카드 (sorted(list 정렬))

문제 승현이는 앞면과 뒷면이 있는 카드 n장을 가지고 있습니다. 각 카드의 앞면에는 1 이상 2222 이하의 정수가 적혀 있으며, 이 수는 카드마다 서로 다릅니다. 각 카드의 뒷면에는 동물 그림이 그려져 있으며, 이 그림 역시 카드마다 서로 다릅니다. 승현이는 카드들을 바닥에 뒷면이 보이도록 일렬로 늘어 놓고, 차례대로 1 이상 n 이하의 자연수 번호를 붙였습니다. 이 중 i번 카드의 앞면에 적혀 있는 수를 ci로 둡시다. 승현이는 바닥에 카드가 정확히 한 장 남을 때까지 아래와 같은 행동을 반복합니다. 승현이는 마음에 드는 서로 다른 카드 두 장을 앞면이 보이도록 뒤집어 봅니다. 승현이는 앞면에 더 작은 수가 적혀 있는 카드를 주머니 속에 넣고, 더 큰 수가 적혀 있는 카드는 다시 바닥에 뒷면이 보이도..

[python] 백준 2475 검증수

문제 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다. 예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다. 학습 코드 a,b,c,d,e=map(int,input().split()) print((a**2+b**2+c**2+d**2+e**2)%10) 2475번: 검증수 (acmicpc.net) 2475번: 검증수 컴퓨터를 제조하는 회사..

[python] 백준 10953 A+B-6

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. A와 B는 콤마(,)로 구분되어 있다. (0 < A, B < 10) 학습 코드 #10953 num=int(input()) for i in range(num): a,b=map(int,input().split(',')) print(a+b) 10953번: A+B - 6 (acmicpc.net) 10953번: A+B - 6 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net

[python] 백준 5543 상근날드

문제 상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다. 햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다. 햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오. 학습 코드 #9625 hamberger=[] drink=[] for i in range(3): ham_price=int(input()) hamberger.append(ham_price) for i in range(2): drk_price=int(input()) drink.append(drk_price) print(min..

[python] 백준 1009 분산처리

문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ... 총 데이터의 개수는 항상 a^b개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 학습 처음에 문제를 우습게 보고 이런식으로 라이브러리를 이용하여 코드를 작성하면 해결할 수 있을것이라 생각했다. 그러나 7,100..

[python] 백준 15552 빠른 A+B sys.stdin.readline()

문제 본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. C++을 사용하고 있고 cin/cout을 사용하고자 한다면, cin.tie(NULL)과 sync_with_stdio(false)를 둘 다 적용해 주고, endl 대신 개행문자(\n)를 쓰자. 단, 이렇게 하면 더 이상 scanf/printf/puts/getchar/putchar 등 C의 입출력 방식을 사용하면 안 된다. Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다. P..

[python] 백준 1330 두 수 비교하기

문제 두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오. 학습 처음 input 함수만 사용했을 때 자꾸 틀린 결과가 출력되었다. 10과 2를 입력했을 때 2가 10보다 더 크다고 출력되는 식이었다. 이유를 찾아보니 input으로 숫자를 입력받을 때는 처음 type이 str로 지정된다는 것이었다. 따라서 int로 형변환을 해줘야 한다. 하나하나 형변환을 하기 번거로우니 map함수를 사용하는 것이 편리하다. a,b = map(int, input().split()) a,b=input().split() 코드 a,b = map(int, input().split()) if a>b: print('>') elif b>a: print('

[python] 백준 2941 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 학습 replace 함수 replace(찾을문자,바꿀문자,바꿀횟수), 공백일시 끝까지 탐색 ptrhon 오랜만에 하려니 하나도 기억이 안난다.. for i in lists = lists에 들어있는 문자를 하나씩 꺼냄 = i 코드 lists=['..

[C] 백준 2750 수 정렬하기

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 학습 여러가지 정렬을 적용할 수 있지만, 나는 그 중에서도 버블정렬을 사용하였다. 버블정렬은 서로 인접한 숫자끼리 비교한 후 num[i-1]이 num[i]보다 크면 서로 교환하는 정렬이다. 버블정렬을 잘 이해하고 있으면 tmp변수를 하나 만들어 num[i],num[i-1]을 서로 교환하는 코드를 작성하는 것은 떠올릴 수 있을 것이다. 한 번의 버블이 끝나면 flag의 값을 1씩 증가시키고, 입력받은 N-1과 같아지면 break문을 통해서 ..

728x90