1월 2주차 코딩일지

2023. 1. 21. 15:11개발/👾 PS

 

 

2023.01.09

 

 

# 막대기 - 백준 1094번

 

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

 

1094번: 막대기

지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대

www.acmicpc.net

 

 

 

X = int(input())
i = 6
cnt = 0
while True:
    if X != 0:
        if X >= 2**i:
            X-= 2**i 
            cnt += 1
        else:
            i-=1
    else:
        break
print(cnt)

 

 

 

 

# 괄호 - 백준 9021번

 

스택 알고리즘

 

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

 

 

 

T = int(input())
stack = []

for i in range(T):
    
    answer = "YES"
    P = input()
    
    for j in range(len(P)):
        
        if P[j] == "(":
            stack.append("(")
                       
        else:
            if len(stack) > 0:
                stack.pop()
                
            else:
                answer = "NO"
                print("NO")
                break
    
    if len(stack) == 0 and answer != "NO":
        print("YES")
        
    elif len(stack) != 0:
        print("NO")
        
    stack.clear()

 

 

 

 

# 균형잡힌 세상 - 백준 4949번

 

스택 알고리즘

 

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

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다

www.acmicpc.net

 

 

 

while True:
    
    sentence = input()
    stack = []
    List = ["(", ")", "[", "]"]
    answer = "yes"
    
    
    if sentence == ".":
        break
        
    else:
        
        for i in range(len(sentence)):
                
            if sentence[i] in List:
                
                if sentence[i] == "(":
                    stack.append("(")
                    
                elif sentence[i] == ")":
                    if len(stack) > 0:
                        if stack[len(stack)-1] == "(":
                            stack.pop()
                        else:
                            answer = "no"
                            
                    else:
                        answer = "no"
                
                elif sentence[i] == "[":
                    stack.append("[")
                    
                elif sentence[i] == "]":
                    if len(stack) > 0:
                        if stack[len(stack)-1] == "[":
                            stack.pop()
                        else:
                            answer = "no"       
                    else:
                        answer = "no"
                        
                                
            elif sentence[i] == ".":
                if len(stack) > 0:
                    answer = "no"
                print(answer)

 

 

 

 

 

우왕 실버 달았다아아 히히

 

 

 

 


 

 

2023.01.10

 

 

# 다리 놓기 - 백준 1010번

 

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

 

1010번: 다리 놓기

입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다.

www.acmicpc.net

 

 

 

import sys 
import math 

T = int(input())

for i in range(T):
    N,M = map(int,sys.stdin.readline().split())
    print(int(math.factorial(M)/(math.factorial(M-N) * math.factorial(N))))

 

import sys
import math

T = int(input())

for i in range(T):
	N, M = map(int, sys.stdin.readline().split())
    
    print int((math.factorial(M) / (math.factorial(M-N) * math.factorial(N))))

 

경우의 수 문제

조합으로 풀었다

 

 

 

 

+) 단계별로 풀기 1차원 배열까지

 

 

 

 


 

 

2023.01.11 

 

 

# 셀프 넘버 - 백준 4673번

 

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

 

4673번: 셀프 넘버

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,

www.acmicpc.net

 

 

 

nonSelfNum = set()

def selfnum(n):
    n = n + sum(map(int,str(n)))
    return n

for i in range(1,10001):
    nonSelfNum.add(selfnum(i))
  
for j in range(1,10001):
    if j not in nonSelfNum:
        print(j)

 

 

+) 단계별로 풀기 - python

 

 


 

 

2023.01.12

 

 

# 한수 - 백준 1065번

 

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

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

 

N = int(input())

numlist = []

def hansoo(num):
    
    if num<100:
        numlist.append(num)
    else:
        a = list(map(int,str(num)))
        if a[0] + a[2] == 2 * a[1]:
            numlist.append(num)

for i in range(1,N+1):
    hansoo(i)
print(len(numlist))

 

 

+) 단계별로 풀기 - python

 

 


 

 

2023.01.13

 

+) 단계별로 풀기 - c언어

 

 

2023.01.14

 

+) 단계별로 풀기 - c언어

 


 

 

2023.01.15

 

 

# 설탕 배달 - 백준 2839번

 

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

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

 

 

sugar = int(input())
n = sugar

bag = 0

if n % 5 == 0:
    bag += n//5

else:
    bag += n//5
    n = n % 5
    
    if n % 3 == 0:
        bag += n//3
        
    else: 
        while True:
            if n % 3 == 0:
                bag += n//3
                break
            
            else:
                n += 5
                bag -= 1
                
            if n > sugar:
                bag = -1
                break 

print(bag)

 

+) 단계별로 풀기 - c언어

'개발 > 👾 PS' 카테고리의 다른 글

[ DFS, BFS ] 완전 탐색 알고리즘  (0) 2023.02.05
알고리즘 기본 개념  (1) 2023.02.05
[ 자료구조 ] 스택 큐 덱  (1) 2023.01.19
1월 1주차 코딩일지  (1) 2023.01.08
220926  (1) 2022.09.27