꾸준히 안타치기

1주 기초문제 모음 본문

CS/백준

1주 기초문제 모음

글자줍기 2022. 7. 4. 08:53
반응형

✅ 10172 - 개

# 개 - 역슬래시를 단독으로 사용하려면 두개를 써야함.
# 큰따옴표 - \" 이거두개를써야 큰따옴표표기

print("|\\_/|")
print("|q p|   /}")
print("( 0 )\"\"\"\\")
print("|\"^\"`    |")
print("||_/=\\\\__|")

 

✅1001 - A-B

a, b = input().split()
print(int(a) - int(b))

 

✅ 10430 - 나머지 (% 사용)

A,B,C = input().split()

A = int(A)
B = int(B)
C = int(C)

print((A+B) % C)
print(((A%C) + (B%C)) % C)
print((A*B)%C)
print(((A%C) * (B%C)) % C)

 

✅ 10860 - 사칙연산 https://dev-note-97.tistory.com/65

a,b = input().split()
a = int(a)
b = int(b)
print(a+b)
print(a-b)
print(a*b)
print(a//b) - /로 하면 2.3333333333333335 나옴 //해야 결과의 몫을 가져옴
print(a%b)

 

✅ 11654 - 아스키코드

a = input()
print(ord(a))

ord() : 문자의 아스키 코드값을 리턴하는 함수이다.

chr() : 아스키 코드값 입력으로 받아 그 코드에 해당하는 문자를 출력하는 함수이다.

 

 

✅ 1330 - 두수비교하기 (조건문)

1) if조건식 코드

a, b = input().split()
a = int(a)
b = int(b)

if a > b:
    print('>')

elif a < b:
    print('<')
else:
    print('==')

2) 삼항 연산자 코드

A,B = map(int,input().split())
print('>') if A > B else print('<') if A < B else print('==')

 

✅ 9498 - 시험성적 (조건문)

a = int(input())
if a >= 90:
    print("A")
elif a >= 80:
    print("B")
elif a >= 70:
    print("C")
elif a >= 60:
    print("D")
else:
    print("F")

 

✅ 14681 - 사분면 고르기

x = int(input())
y = int(input())

if x > 0 and y > 0:
    print("1")
elif x < 0 and y > 0:
     print("2")
elif x < 0 and y < 0:
    print("3")
elif x > 0 and y < 0:
    print("4")

 

✅ 2753 - 윤년 (윤년은 연도가 4의 배수이면서(and) 100의 배수가 아닐때 / 또는 400의 배수 일때)

n = int(input())
if (n % 4 == 0 and n % 100 != 0) or n % 400 == 0:
    print(1)
else:
    print(0)

1) if - else 조건식

year = int(input())

if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0):
    print('1')
else:
    print('0')

2)삼항 연산자

year = int(input())

print('1') if ((year%4 == 0)and(year%100 != 0)) or (year%400 == 0) else print('0')

 

 1712 - 손익분기점 *** https://ctkim.tistory.com/153     https://ooyoung.tistory.com/80 

a, b, c = map(int, input().split())

if b >= c:
    print(-1)
else:
    print(a//(c-b)+1)
a = 고정비 b = 변동비 c = 노트북가격 , n = 생산대수

a, b, c = map(int, input().split())
// 가변비용이 노트북가격보다 같거나 크면, 무조건 손해
if b >= c:
    print(-1)

// 소수점제거를 위해 //사용
else:
//  a/(c-b)은 딱 손익분기점이므로 +1 부터 최초이익이 발생
    print(a//(c-b)+1)

a+b*n = c*n / n을 구하는 식은 n = a/(c-b)가 된다.

고정비용/(가격 - 가변비용) → a /(c-b) , a/(c-b)은 딱 손익분기점이므로 +1 부터 최초이익이 발생

 

 

 2884 - 알람시계  https://velog.io/@iillyy/백준-2884번-파이썬

10시 10분 10시 45분, 0시 50분 (-45분 했을때) 

hour, min = map(int,input().split())

if min >= 45:
    print(hour, min-45)
elif hour>0 and min < 45:
    print(hour-1, min+15)
else:
    print(23, min+15)
hour, min = map(int, input().split())

if min >= 45:
    print(hour, min - 45)
elif hour > 0 and min < 45:
    print(hour-1, min + 15)
elif hour == 0 and min < 45:
    print(23, min + 15)

✅ 2525 - 오븐시계  https://jjyoung.tistory.com/5

https://thingjin.tistory.com/entry/백준-2525번-오븐-시계-파이썬


hour, min = map(int, input().split())
add = int(input()) #조리시간

h = (hour + (min + add) // 60) % 24 # 시간값구하기 몫이 시간
m = (min + add) % 60 # 나머지가 분

print(h,m)

 

✅2438 - 별찍기 https://ooyoung.tistory.com/39

n = int(input())
// 1부터 n만큼 반복한다.
for i in range(1, n+1):
//  별을 찍는다. i번만큼 
    print('*' * i)

✅2439 - 별찍기2 (공백넣기)

n = int(input())

for i in range(1, n+1):
    print(" "*(n-i) +'*' * i)

✅2731 - N찍기

 

 

11022번 - A+B (f’ string 활용, 반복문) https://ooyoung.tistory.com/38

t = int(input())
for x in range(1, t+1):
    a, b = map(int, input().split())
    print(f'Case #{x}: {a} + {b} = {a+b}')

 

 

✅ 8393 - 합( 1부터 n까지의 정수의 합 공식은 n*(n+1)/2이다.)

n = int(input())
print(n*(n+1)//2)

1) for문 코드

n = int(input())

total = 0 # 변수에 0을 지정
for i in range(1, n+1) :# 1부터 n까지
    total += i # total = total + i와 같은 의미print(total)

2) sum함수 이용한 줄 코드

print(sum(range(1, int(input())+1)))

 

 

10871 - X보다 작은수 https://wook-2124.tistory.com/227

n, x = map(int, input().split())
num = list(map(int, input().split()))

for i in range(n):
    if num[i] < x:
        print(num[i], end = " ")
t, x = map(int, input().split())
num = list(input().split())

for i in num:
  if (int(i) < x):
    print(i, end=' ')
// n, x 입력 받기 (10 5)
n, x = map(int, input().split())
// list입력을 각각 받아서 num에 넣음 (1 10 4 9 2 3 8 5 7 6 )
num = list(map(int, input().split()))
// n의 크기 만큼 반복한다. 
for i in range(n):
    // num의 숫자가 x보다 작으면 프린트한다.
    if num[i] < x:
	      // num[i]와 띄어쓰기 넣기
        print(num[i], end = " ")

 

 

✅ 2444 - 다이아몬드 찍기 https://heewon9809.tistory.com/86

N=int(input())
for i in range(1,N+1):
    print(" "*(N-i)+"*"*(2*i-1))
for k in range(N-1,0,-1):
    print(" "*(N-k)+"*"*(2*k-1))

 

 

✅ 1085 - 직사각형에서 탈출 ( min함수 사용 )

https://nyol.tistory.com/124

x, y, w, h = map(int, input().split())
print(min(x , y , w-x, h-y))

 

 

✅ 3009 - 네번째점 ????

https://ooyoung.tistory.com/103

https://happylulurara.tistory.com/95

x_nums = []
y_nums = []
for _ in range(3):
    x, y = map(int, input().split())
    x_nums.append(x)
    y_nums.append(y)

for i in range(3):
    if x_nums.count(x_nums[i]) == 1:
        x4 = x_nums[i]
    if y_nums.count(y_nums[i]) == 1:
        y4 = y_nums[i]
print(x4, y4)
x_ = []
y_ = []

for _ in range(3):
   x, y = map(int, input().split())
   x_.append(x)
   y_.append(y)

for i in range(3):
    if(x_.count(x_[i]) == 1):
        x = x_[i]
    if(y_.count(y_[i]) == 1):
        y = y_[i]
print(x,y)

✅ 4153 직각삼각형 - 피타고라스정리

https://omins.tistory.com/8 제일긴변의 길이 C

while True:
    lst = list(map(int, input().split()))
    if lst[0] == 0 and lst[1] == 0 and lst[2] == 0:
       break
    lst.sort()
    if lst[0]**2 + lst[1]**2 == lst[2]**2 :
        print('right')
    else:
        print('wrong')

3가지의 수를 입력받아서 list에 넣는다.

이때 들어있는 수가 0일때는 빠져나온다.

넣고나서, sort()한다. 오름차순순서대로 정렬

피타고라스의 정의 a의 제곱 + b의 제곱이 c의 제곱값과 같다면

right를 출력 아니면 wrong을 출력

 

 

✅ 10872 - 팩토리얼( =계승)

1) 재귀 함수: 함수 자기 자신을 호출하는 함수

https://ooyoung.tistory.com/114

def factorial(n):
    result = 1
    if n > 0 :
        result = n * factorial(n-1)
    return result

n = int(input())
print(factorial(n))

2) for문 코드

n = int(input())

result = 1
if n > 0:
    for i in range(1, n+1):
        result *= i
print(result)

result = 1 0이 입력되면 1이 호출

0보다 크면 if조건식 아래 for문이 반복되는 동안 1부터 n까지 곱한 수가 result값이 된다.

1부터 입력 받은 수까지의 수를 반복적으로 곱한다.

 

 

✅ 2562 - 최대값

1) 9개의 수를 for문으로 입력받는 코드

numbers = []
for _ in range(9):
    i = int(input())
    numbers.append(i)

print(max(numbers))
print(numbers.index(max(numbers))+1)

2) for문을 list comprehension 으로 작성한 코드

numbers = [int(input()) for _ in range(9)]

print(max(numbers))
print(numbers.index(max(numbers)) + 1)

https://ooyoung.tistory.com/55

 

 

✅ 2577 - 숫자의 개수

https://wook-2124.tistory.com/233

numbers = [int(input()) for _ in range(3)]
result = list(str(numbers[0]* numbers[1]* numbers[2]))

for i in range(10):
	print(result.count(str(i)))

a = int(input())
b = int(input())
c = int(input())

result = list(str(a*b*c))

for i in range(10):
	print(result.count(str(i)))

3가지 숫자를 입력받는다.

a = int(input())

b = int(input())

c = int(input())

그 정수값을 문자열로 변환해서 하나하나를 그 세가지 수를 곱한후 리스트에 담는다.

result = list(str(abc))

반복문을 사용해서 각자리수 만큼 값을 result에 담는다. 이때 담긴(i)를 문자로 변환하고 갯수를 count로 세서 result에 넣어준다.

for i in range(10):

print(result.count(str(i))

정수 → 문자열로 바꾼후 → list에 넣고 count함수를 사용하기 위해 str로 바꾼후 출력

 

 

✅ 3052 - 나머지

https://wook-2124.tistory.com/250

빈 리스트 n = []을 만든다.

for문으로 0-9까지 반복한다.

a로 변수를 입력받고 b변수로는 a를 로 나눈 나머지 값을 넣어준다.

이것을 아까 만든리스트에 append한다. n = [39, 40, 41, 0, 1, 2, 40, 41, 0 ,1]

이것을 set함수를 이용해서 중복을 제거해준다.

그리고 leng함수를 이용해서 리스트의 길이를 출력해준다.

수를 여러번 입력받고 나눠서 리스트에 담고 중복을 제거한뒤에 몇개인지 출력 하는 문제

n = []
for _ in range(10):
    a = int(input())
    b = a % 42
    n.append(b)

s = set(n)
print(len(s))

 

 

✅ 8958번 -OX퀴즈

https://ooyoung.tistory.com/61

n = int(input())

for _ in range(n):
    ox_list = list(input())
    score = 0  
    sum_score = 0  # 새로운 ox리스트를 입력 받으면 점수 합계를 리셋한다.
    for ox in ox_list:
        if ox == 'O':
            score += 1  # 'O'가 연속되면 점수가 1점씩 커진다.
            sum_score += score  # sum_score = sum_score + score
        else:
            score = 0
    print(sum_score)

 

 

✅ 11720 - 숫자의 합

https://ooyoung.tistory.com/67

n = int(input())

nums = input()

total = 0
for i in range(n):
    total += int(nums[i])
print(total)

sum으로 구하기

n = int(input())
print(sum(map(int, input())))

 

 

✅ 10809 - 알파벳찾기

https://velog.io/@0sunset0/백준-10809-파이썬-알파벳-찾기

각각의 알파벳에 들어있으면 1, 없으면 -1 출력

1. for문 이용

S = list(input())
c = 'abcdefghijklmnopqrstuvwxyz'

for i in c:
    if i in S:
        print(S.index(i), end =' ')
    else:
        print(-1, end=' ')

for문을 이용하여 a부터 z까지 S에 그 알바벳이 있는지 검사한다.

있으면 인덱스를 출력하고

없으면 -1을 출력한다.

2. find() 이용

S = input()

for x in 'abcdefghijklmnopqrstuvwxyz':
    print(S.find(x), end = ' ')

find 함수는 어떤 찾는 문자가 문자열 안에서 첫 번째에 위치한 순서를 숫자로 출력한다.만일 찾는 문자가 문자열 안에 없는 경우에는 -1을 출력하는 함수이다.

 

 

✅ 2675 - 문자열반복

https://pacific-ocean.tistory.com/41

https://www.acmicpc.net/problem/2675

n  = int(input()) // n입력받음
for in range(n):
	 num, t = input().split() // 3 ABC입력받음
   text='' // 빈텍스트배열 생성
for i in t:
		text += int(num)*i  텍스트에 글자를 i*num 번 반복해서 담는다.정수로 변환해줘야함
print(text)

 

 

✅ 1152 - 단어의 개수

https://wook-2124.tistory.com/223

word = input.split() // 넣었다고 치면 The Curious Case of Benjamin Button
print(len(word))// word = [The, Curious, Case, of, Benjamin, Button]의 갯수

띄어쓰기 기준으로 단어를 잘라서 word에 넣고 이것의 갯수를 반환

 

✅ 2908 - 상수

인덱스활용

a, b = input().split
newa = int(a[2]+ a[1]+a[0]
newb = int(b[2]+b[1]+b[0]
print(max(newa, newb))

입력받은 단어의 인덱스를 사용해서 거꾸로 뒤집어준다.

max를 사용해 a와 b중 큰수를 출력한다.

reversed()활용

a, b = input().split()
print(max("".join(reversed(a)), "".join(reversed(b))))

✔ 내장함수 reversed()는 iterator의 요소를 역순으로 반환한다. 이때 reversed 객체를 반환하여 주므로 이를 문자열로 바꾸기 위해 ''.join을 활용해주었다.

 

 

✅15552 - 빠른 A+B

https://www.acmicpc.net/problem/15552

n = int(sys.stdin.readline())

a,b = map(int, sys.stdin.readline(). split())
import sys

n = int(sys.stdin.readline())
for i in range(n):
  a,b = map(int, sys.stdin.readline(). split())
  print(a+b)

 

 

✅ 10162 - 전자레인지( 수학 공약수)

https://ludere.tistory.com/55

3개의 버튼으로 T초를 맞출 수 없으면 음수 -1을 첫 줄에 출력해야 한다. → 최대공약수 https://mathbang.net/202

3개의 버튼을 눌러서 나올 수 없는 수는 , 3개의 버튼 시간의 최대공약수로 나눴을때 나눠 떨어지지않는다는 의미이다.

n = int(input())

if n%10 != 0:
	print(-1)
else:
	for i in [300, 60, 10]:
		print(n//i, end=' ')
		n = n%i

 

 

✅ 1439 - 뒤집기******(on/off버튼느낌)

https://data-flower.tistory.com/35?category=949036

  • 숫자를 0으로 다 뒤집거나 1로 다 뒤집는다.
  • 0으로 뒤집을 때의 횟수와 1로 뒤집을 때의 횟수를 비교하여 작은 값을 출력한다.
# 1439번 뒤집기

data = input()
count0 = 0 # 전부 0으로 바뀌는 경우
count1 = 0 # 전부 1로 바뀌는 경우

# 첫 번째 원소에 대해서 처리
if data[0] == '1':
  count0 += 1
else:
  count1 += 1

# 두 번째 원소부터 모든 원소를 확인하며
for i in range(len(data)-1):
 # 연달은 문자가 다를때(0 혹은 1)
  if data[i] != data[i+1]:
    # 다음 수에서 1로 바뀌는 경우
    if data[i+1] == '1':
      count0 += 1
    # 다음 수에서 0으로 바뀌는 경우
    else:
      count1 += 1

print(min(count0, count1))

 

 

✅ 1316 - 그룹단어 체커 ???

https://ooyoung.tistory.com/79

그룹단어는 서로다른 알파벳으로 이어진 단어..

같은단어는 연속해서만 나올수 있다.

n = int(input())

group_word = 0
for _ in range(n):
    word = input()
    error = 0
    for index in range(len(word)-1):  # 인덱스 범위 생성 : 0부터 단어개수 -1까지 
        if word[index] != word[index+1]:  # 연달은 두 문자가 다른 때,
            new_word = word[index+1:]  # 현재글자 이후 문자열을 새로운 단어로 생성
            if new_word.count(word[index]) > 0:  # 남은 문자열에서 현재글자가 있있다면
                error += 1  # error에 1씩 증가.
    if error == 0:  
        group_word += 1  # error가 0이면 그룹단어
print(group_word)

 

 

✅ 5618 - 공약수

https://intrepidgeeks.com/tutorial/bai-jun-5618-common-divisor

import sys

# 두 수의 공약수는 두 수의 최대공약수의 약수
def gcd(a, b):
    if a == 0:
        return b
    return gcd(b % a, a)

n = int(sys.stdin.readline())
num = list(map(int, sys.stdin.readline().split()))  # 두 수 혹은 세 수 입력받음
g = gcd(num[0], gcd(num[1], num[-1]))               # 두 수 혹은 세 수의 최대공약수
for i in range(1, g // 2 + 1):                      # 1부터 최대공약수의 절반만큼
    if g % i == 0:                                  # 최대공약수를 나누어 떨어지게 하면 약수
        print(i)
print(g)                                            # 최대공약수 자신도 출력

 

 

✅ 2309 - 일곱난쟁이 ***

# 9개의 값을 받아서 정수형으로 변환해 담는다.
# 배열의 합을 totalSum에 담는다.
arr = [int(input()) for _ in range(9)]

totalSum = sum(arr)
for i in range(9):
    totalSum -= arr[i]
    for j in range(i+1, 9):
        totalSum -= arr[j]
        if totalSum == 100:
            arr.remove(arr[j])
            arr.remove(arr[i])
            break
        totalSum += arr[j]
    else:
        totalSum += arr[i]
        continue
    break
arr.sort() // 오름차순으로 정렬
print(*arr, sep="\n")
반응형

'CS > 백준' 카테고리의 다른 글

1417 - 국회의원 선거  (0) 2022.07.11
7785 - 회사에 있는 사람(map)  (0) 2022.07.11
1712 - 손익분기점  (0) 2022.06.29
10172 - 개  (0) 2022.06.29
3040 - 백설 공주와 일곱 난쟁이 ( 조합, 순열 )  (0) 2022.06.29
Comments