www.acmicpc.net/problem/7568

 

7568번: 덩치

우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩

www.acmicpc.net


문제 해결을 위한 과정

문제를 잘 살펴보면 자신보다 몸무게 그리고 키 모두 큰 사람의 수 + 1이 자신의 덩치 등수가 되는 것을 알 수 있습니다.

따라서 입력받은 몸무계와 키를 각각의 사람마다 묶어서 리스트에 저장해준 후 자신보다 몸무게 그리고 키가 모두 큰 사람의 수를 세는 것으로 쉽게 해결할 수 있습니다. 


문제 해결을 위한 팁

문제의 조건에서 데이터의 개수인 N이 50이하인것을 확인할 수 있습니다. 따라서 O(N^2)의 시간 복잡도를 가진 알고리즘을 적용해도 해결할 수 있습니다.


소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
= int(input())
 
data = [] # 입력받은 정보를 저장할 리스트 data
ans = [] # 등수정보를 저장할 리스트 ans
for i in range(n):
    a, b = map(int, input().split())
    data.append((a, b)) # 몸무계와 키를 묶어서 append 해줌
 
for i in range(n):
    count = 0
    for j in range(n):
        if data[i][0< data[j][0and data[i][1< data[j][1]: # 몸무게와 키 모두 자신보다 큰 사람의 수를 센다
            count += 1 
    ans.append(count + 1# 덩치 등수는 자신보다 몸무계 키 모두 큰 사람의 수 + 1 이므로 count + 1을 ans에 append한다.
 
for d in ans:
    print(d,end=" ")
cs

www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한

www.acmicpc.net


문제 해결을 위한 과정

이 문제의 경우 단어와 단어 사이에 공백이 있다는 점을 이용하여 해결을 합니다. 문제의 예시를 보면

The Curious Case of Benjamin Button 공백이 5개가 있습니다. 공백은 단어 사이에 존재하기 때문에 단어는 6개입니다.

그러나 예시 중 시작이 공백으로 시작하는 것이 있습니다. 이를 염두에 두면 단어 뒤에 공백이 존재하는 경우 단어의 개수를 하나 증가시키는 방향으로 해결할 수 있다는 것을 알 수 있습니다.


문제 해결을 위한 팁

문제 해결을 위한 과정을 보면 단어 다음에 공백이 있다면 단어의 개수를 하나 증가시키는 것으로 해결할 수 있다는 것을 알 수 있습니다. 그러나 이렇게 하면 문자열의 가장 마지막 단어의 개수를 셀 수 없게 됩니다. 따라서 단어를 입력받은 후 그 뒤에 공백 문자를 붙여주면 이 문제점을 해결할 수 있습니다.


소스코드

 

1
2
3
4
5
6
7
8
word = input()
word += " "
count = 0
for i in range(len(word)-1):
    if word[i] != " " and word[i+1== " ":
        count += 1
 
print(count)
cs

www.acmicpc.net/problem/2739

 

2739번: 구구단

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

www.acmicpc.net


문제 해결을 위한 과정

쉽게 해결할 수 있는 구구단 문제입니다. n을 입력받고 단순한 for문으로 해결할 수 있습니다.


소스코드

 

1
2
3
4
= int(input())
 
for i in range(110):
    print(n, "*", i, "=", n*i)
cs

www.acmicpc.net/problem/2742

 

2742번: 기찍 N

자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

www.acmicpc.net


문제 해결을 위한 과정

앞선 2741번을 거꾸로 출력을 해주면 되는 문제입니다. 따라서 2741번 소스코드에 n을 빼주는 식으로 해결을 하면 됩니다.


소스코드

 

1
2
3
4
= int(input())
 
for i in range(n):
    print(n-i)
cs

www.acmicpc.net/problem/2741

 

2741번: N 찍기

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

www.acmicpc.net


문제 해결을 위한 과정

이 문제는 하나의 for문을 이용하여 쉽게 해결할 수 있습니다. Python의 경우 print()에 기본적으로 개행이 들어있다는 것을 알면 쉽게 해결할 수 있습니다.


소스코드
1
2
3
4
= int(input())
 
for i in range(1, n+1):
    print(i)
cs

www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net


문제 해결을 위한 과정

앞선 2438번 문제와 동일하지만 각 행마다 n-1개만큼의 공백이 들어감을 주의하며 해결한다.


소스코드

 

1
2
3
4
5
6
7
8
= int(input())
 
for i in range(1, n+1):
    for j in range(n-i):
        print(" ",end="")
    for j in range(i):
        print("*", end="")
    print()
cs

+ Recent posts