Swift PS 3주차 🐹

μ„ μ£ΌΒ·2022λ…„ 5μ›” 1일
0

Swift PS

λͺ©λ‘ 보기
3/3

πŸ“§ 2711 μ˜€νƒ€λ§¨ 고창영

πŸ“Œ 문제

κ³ μ°½μ˜μ€ 맨날 μ˜€νƒ€λ₯Ό λ‚Έλ‹€. μ°½μ˜μ΄κ°€ μ˜€νƒ€λ₯Ό λ‚Έ λ¬Έμž₯κ³Ό μ˜€νƒ€λ₯Ό λ‚Έ μœ„μΉ˜κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ˜€νƒ€λ₯Ό μ§€μš΄ λ¬Έμžμ—΄μ„ 좜λ ₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μ°½μ˜μ΄λŠ” μ˜€νƒ€λ₯Ό λ°˜λ“œμ‹œ 1개만 λ‚Έλ‹€.

μž…λ ₯

첫째 쀄에 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ˜ 개수 T(1<=T<=1,000)κ°€ 주어진닀. 각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λŠ” ν•œ μ€„λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€. 첫 μˆ«μžλŠ” μ°½μ˜μ΄κ°€ μ˜€νƒ€λ₯Ό λ‚Έ μœ„μΉ˜μ΄κ³ , 두 번째 λ¬Έμžμ—΄μ€ μ°½μ˜μ΄κ°€ 친 λ¬Έμžμ—΄μ΄λ‹€. λ¬Έμžμ—΄μ˜ κ°€μž₯ 첫 λ¬ΈμžλŠ” 1번째 문자이고, λ¬Έμžμ—΄μ˜ κΈΈμ΄λŠ” 80을 λ„˜μ§€ μ•Šκ³ , λŒ€λ¬Έμžλ‘œλ§Œ 이루어져 μžˆλ‹€. μ˜€νƒ€λ₯Ό λ‚Έ μœ„μΉ˜λŠ” λ¬Έμžμ—΄ 길이보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

좜λ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λŒ€ν•΄ μ˜€νƒ€λ₯Ό μ§€μš΄ λ¬Έμžμ—΄μ„ 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

4
4 MISSPELL
1 PROGRAMMING
7 CONTEST
3 BALLOON

예제 좜λ ₯ 1

MISPELL
ROGRAMMING
CONTES
BALOON

πŸ“Œ 풀이

πŸ’¬ Code

for _ in 0..<Int(String(readLine()!))! {
  let input = readLine()!.split(separator: " ")
  var sentence = input[1].map { $0 }
  sentence.remove(at: Int(input[0])! - 1)
  print(String(sentence))
}

πŸ’‘ Comment




πŸ“§ 10102 κ°œν‘œ

πŸ“Œ 문제

A와 Bκ°€ ν•œ μ˜€λ””μ…˜ ν”„λ‘œμ˜ κ²°μŠΉμ „μ— μ§„μΆœν–ˆλ‹€. κ²°μŠΉμ „μ˜ μŠΉμžλŠ” μ‹¬μ‚¬μœ„μ›μ˜ νˆ¬ν‘œλ‘œ κ²°μ •λœλ‹€.

μ‹¬μ‚¬μœ„μ›μ˜ νˆ¬ν‘œ κ²°κ³Όκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, μ–΄λ–€ μ‚¬λžŒμ΄ μš°μŠΉν•˜λŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

μž…λ ₯은 총 두 μ€„λ‘œ 이루어져 μžˆλ‹€. 첫째 μ€„μ—λŠ” μ‹¬μ‚¬μœ„μ›μ˜ 수 V (1 ≀ V ≀ 15)κ°€ 주어지고, λ‘˜μ§Έ μ€„μ—λŠ” 각 μ‹¬μ‚¬μœ„μ›μ΄ λˆ„κ΅¬μ—κ²Œ νˆ¬ν‘œν–ˆλŠ”μ§€κ°€ 주어진닀. A와 BλŠ” 각각 κ·Έ μ°Έκ°€μžλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

좜λ ₯

  • Aκ°€ 받은 ν‘œκ°€ B보닀 λ§Žμ€ κ²½μš°μ—λŠ” A
  • Bκ°€ 받은 ν‘œκ°€ A보닀 λ§Žμ€ κ²½μš°μ—λŠ” B
  • 같은 κ²½μš°μ—λŠ” Tie

예제 μž…λ ₯ 1

6
ABBABB

예제 좜λ ₯ 1

B

πŸ“Œ 풀이

πŸ’¬ Code

let n = Int(String(readLine()!))!
let vote = readLine()!

let a = vote.filter { $0 == "A" }
let b = vote.filter { $0 == "B" }

print(a.count == b.count ? "Tie" : a.count > b.count ? "A" : "B")

πŸ’‘ Comment




πŸ“§ 10808 μ•ŒνŒŒλ²³ 개수

πŸ“Œ 문제

μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어진 단어 Sκ°€ 주어진닀. 각 μ•ŒνŒŒλ²³μ΄ 단어에 λͺ‡ κ°œκ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 단어 Sκ°€ 주어진닀. λ‹¨μ–΄μ˜ κΈΈμ΄λŠ” 100을 λ„˜μ§€ μ•ŠμœΌλ©°, μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆλ‹€.

좜λ ₯

단어에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” a의 개수, b의 개수, …, z의 개수λ₯Ό 곡백으둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

baekjoon

예제 좜λ ₯ 1

1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0

πŸ“Œ 풀이

πŸ’¬ Code

var dict = [Int](repeating: 0, count: 26)
let input = readLine()!

for i in input {
  dict[Int(Character(String(i)).asciiValue!) - 97] += 1
}

print(dict.map { String($0) }.joined(separator: " "))

πŸ’‘ Comment




πŸ“§ 11008 λ³΅λΆ™μ˜ 달인

πŸ“Œ 문제

ν•œμ‹ μ΄λŠ” λŒ€ν•™κ΅μ—μ„œ "λ³΅λΆ™μ˜ 달인"으둜 유λͺ…ν•˜λ‹€. ν•œμ‹ μ΄λŠ” 타이핑 속도가 느리기 λ•Œλ¬Έμ— λŒ€ν•™μ—μ„œ κ°€λŠ₯ν•œ λͺ¨λ“  일을 λ³΅λΆ™μœΌλ‘œ ν•΄κ²°ν•œλ‹€. κ·ΈλŠ” n개의 문자λ₯Ό μž…λ ₯ν•˜λŠ”λ° μžˆμ–΄μ„œ n초의 μ‹œκ°„μ΄ κ±Έλ¦¬μ§€λ§Œ λ›°μ–΄λ‚œ "λΆ™μ—¬λ„£κΈ°" μŠ€ν‚¬μ„ μ΄μš©ν•˜λ©΄ μ–΄λ– ν•œ 개수의 λ¬Έμžλ„ 단 1μ΄ˆλ§Œμ— 타이핑 ν•  수 μžˆλ‹€. λ§Œμ•½ ν•œμ‹ μ΄κ°€ "bana"λ₯Ό λ³΅μ‚¬ν•œ μƒνƒœμ—μ„œ "banana"λ₯Ό νƒ€μ΄ν•‘ν•œλ‹€λ©΄, "bana" λΆ™μ—¬λ„£κΈ° 1초, 'n' μž…λ ₯, 'a' μž…λ ₯으둜 총 3μ΄ˆκ°€ κ±Έλ¦°λ‹€. ν•œμ‹ μ΄κ°€ ν΄λ¦½λ³΄λ“œμ— μ €μž₯ν•œ pλ₯Ό μ•Œκ³  μžˆμ„ λ•Œ sλ₯Ό μž…λ ₯ν•˜λŠ”λ° κ±Έλ¦¬λŠ” μ΅œμ†Œ μ‹œκ°„μ„ κ³„μ‚°ν•΄λ³΄μž!

μž…λ ₯

첫 번째 μ€„μ—λŠ” ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€μ˜ 개수 T(T ≀ 25)κ°€ μž…λ ₯λœλ‹€. 각 ν…ŒμŠ€νŠΈμΌ€μ΄μŠ€λŠ” ν•œ 쀄에 2개의 λ¬Έμžμ—΄ s와 pκ°€ 곡백으둜 κ΅¬λΆ„λ˜μ–΄ μž…λ ₯되며 ν•œμ‹ μ΄λŠ” pλ₯Ό λ³΅μ‚¬ν•˜μ—¬ sλ₯Ό λ§Œλ“€μ–΄ λ‚΄λŠ” 것을 λͺ©ν‘œλ‘œ ν•œλ‹€. s의 μ΅œλŒ€ κΈΈμ΄λŠ” 10,000이고, p의 μ΅œλŒ€ κΈΈμ΄λŠ” 100이닀.

좜λ ₯

각 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ— λ§žλŠ” ν•œμ‹ μ΄κ°€ pλ₯Ό μ΄μš©ν•˜μ—¬ sλ₯Ό 타이핑할 λ•Œ κ±Έλ¦¬λŠ” μ΅œμ†Œ μ‹œκ°„(초 λ‹¨μœ„)을 좜λ ₯ν•˜λΌ!

예제 μž…λ ₯ 1

2
banana bana
asakusa sa

예제 좜λ ₯ 1

3
5

πŸ“Œ 풀이

πŸ’¬ Code

import Foundation

for _ in 0..<Int(String(readLine()!))! {
  let input = readLine()!.split(separator: " ")
  let s = input[0]
  let p = input[1]
  let replaced = s.replacingOccurrences(of: p, with: "a")
  print(replaced.count)
}

πŸ’‘ Comment




πŸ“§ 1225 μ΄μƒν•œ κ³±μ…ˆ

πŸ“Œ 문제

AΓ—Bλ₯Ό κ³„μ‚°ν•˜λ‹€ μ§€κ²¨μ›Œμ§„ ν˜•νƒμ΄λŠ” AΓ—Bλ₯Ό μƒˆλ‘œμš΄ λ°©λ²•μœΌλ‘œ μ •μ˜ν•˜λ €κ³  ν•œλ‹€.

Aμ—μ„œ ν•œ 자리λ₯Ό 뽑고 Γ— Bμ—μ„œ μž„μ˜λ‘œ ν•œ 자리λ₯Ό 뽑아 κ³±ν•œλ‹€.

의 κ°€λŠ₯ν•œ λͺ¨λ“  μ‘°ν•© (Aκ°€ n자리, Bκ°€ m자리 수라면 총 κ°€λŠ₯ν•œ 쑰합은 nΓ—m개)을 λ”ν•œ 수둜 μ •μ˜ν•˜λ €κ³  ν•œλ‹€.

예λ₯Ό λ“€μ–΄ 121Γ—34λŠ”

1Γ—3 + 1Γ—4 + 2Γ—3 + 2Γ—4 + 1Γ—3 + 1Γ—4 = 28

이 λœλ‹€. μ΄λŸ¬ν•œ ν˜•νƒμ΄μ˜ κ³±μ…ˆ κ²°κ³Όλ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 A와 Bκ°€ 주어진닀. μ£Όμ–΄μ§€λŠ” 두 μˆ˜λŠ” λͺ¨λ‘ 10,000자리λ₯Ό λ„˜μ§€ μ•ŠλŠ” 음이 μ•„λ‹Œ μ •μˆ˜μ΄λ‹€. μˆ˜κ°€ 0인 κ²½μš°μ—λŠ” 0만 주어지며, κ·Έ μ™Έμ˜ 경우 μˆ˜λŠ” 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.

좜λ ₯

첫째 쀄에 ν˜•νƒμ΄μ˜ κ³±μ…ˆ κ²°κ³Όλ₯Ό 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

123 45

예제 좜λ ₯ 1

54

πŸ“Œ 풀이

πŸ’¬ Code

let input = readLine()!.split(separator: " ")
let (a, b) = (input[0].map { Int(String($0))! }, input[1].map{ Int(String($0))! })

let x = a.reduce(0, +)
let y = b.reduce(0, +)

print(x * y)

πŸ’‘ Comment




πŸ“§ 10821 μ •μˆ˜μ˜ 개수

πŸ“Œ 문제

μˆ«μžμ™€ 콀마둜만 이루어진 λ¬Έμžμ—΄ Sκ°€ 주어진닀. μ΄λ•Œ, S에 ν¬ν•¨λ˜μ–΄μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

S의 첫 λ¬Έμžμ™€ λ§ˆμ§€λ§‰ λ¬ΈμžλŠ” 항상 숫자이고, μ½€λ§ˆλŠ” μ—°μ†ν•΄μ„œ 주어지지 μ•ŠλŠ”λ‹€. 또, 0으둜 μ‹œμž‘ν•˜λŠ” μ •μˆ˜λŠ” 주어지지 μ•ŠλŠ”λ‹€.

μž…λ ₯

첫째 쀄에 λ¬Έμžμ—΄ Sκ°€ 주어진닀. S의 κΈΈμ΄λŠ” μ΅œλŒ€ 100이닀.

좜λ ₯

λ¬Έμžμ—΄ S에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” μ •μˆ˜μ˜ 개수λ₯Ό 좜λ ₯ν•œλ‹€.

예제 μž…λ ₯ 1

10,20,30,50,100

예제 좜λ ₯ 1

5

πŸ“Œ 풀이

πŸ’¬ Code

print(readLine()!.split(separator: ",").count)

πŸ’‘ Comment




πŸ“§ 2386 λ„λΉ„μ˜ μ˜μ–΄ 곡뢀

πŸ“Œ 문제

꿍은 λ„λΉ„μ˜ 자유λ₯Ό μœ„ν•΄ μ˜μ–΄λ₯Ό κ°€λ₯΄μΉ˜κΈ°λ‘œ κ²°μ‹¬ν–ˆλ‹€. ν•˜μ§€λ§Œ λ„λΉ„λŠ” 바보라 ABCλΆ€ν„° λ°°μ›Œμ•Ό ν•œλ‹€.

κ·Έλž˜μ„œ 꿍은 μ˜μ–΄ λ¬Έμž₯κ³Ό μ•ŒνŒŒλ²³ ν•˜λ‚˜κ°€ 주어지면 κ·Έ μ•ŒνŒŒλ²³μ΄ λ¬Έμž₯μ—μ„œ λͺ‡ 번 λ‚˜νƒ€λ‚˜λŠ”μ§€λ₯Ό μ„ΈλŠ” λ¬Έμ œλ“€μ„ λ‚΄μ£Όμ—ˆλ‹€. ν•˜μ§€λ§Œ λ„λΉ„λŠ” λ§ˆλ²•μ‚¬κ³  컴곡도 λ§ˆλ²•μ‚¬λ‹€.

μ—¬λŸ¬λΆ„μ€ 도비λ₯Ό μœ„ν•΄ 문제의 닡을 μ•Œλ €μ£ΌλŠ” ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μˆ˜ μžˆμ„κ²ƒμ΄λ‹€!

μž…λ ₯

μž…λ ₯은 λͺ‡ 개의 μ€„λ“€λ‘œ 이루어진닀.

각 μ€„μ—λŠ” ν•˜λ‚˜μ˜ μ†Œλ¬Έμžμ™€ μ˜μ–΄ λ¬Έμž₯이 곡백으둜 κ΅¬λΆ„λ˜μ–΄ 주어진닀.

각 λ¬Έμž₯은 길이가 1μ—μ„œ 250이며 μž…λ ₯의 λ§ˆμ§€λ§‰μ€ #이닀.

좜λ ₯

좜λ ₯의 각 쀄은 μž…λ ₯으둜 주어진 μ†Œλ¬Έμžμ™€ κ·Έ μ†Œλ¬Έμž μ•ŒνŒŒλ²³μ΄ λ‚˜νƒ€λ‚œ 횟수둜 이루어진닀. μ΄λ•Œ λ¬Έμž₯μ—μ„œ ν•΄λ‹Ή μ•ŒνŒŒλ²³μ΄ μ†Œλ¬Έμžλ‘œ λ‚˜νƒ€λ‚˜λ˜ λŒ€λ¬Έμžλ‘œ λ‚˜νƒ€λ‚˜λ˜ λͺ¨λ‘ μ„Έμ•Ό ν•œλ‹€.

예제 μž…λ ₯ 1

g Programming Contest
n New Zealand
x This is quite a simple problem.
#

예제 좜λ ₯ 1

g 2
n 2
x 0

πŸ“Œ 풀이

πŸ’¬ Code

while true {
  let input = readLine()!
  if input == "#" {
    break
  }

  let target = input[input.startIndex]
  print(target, terminator: " ")

  let string = input.split(separator: " ").dropFirst().joined().lowercased()

  print(string.filter { $0 == target }.count)
}

πŸ’‘ Comment

profile
κΈ°λ‘ν•˜λŠ” 개발자 πŸ‘€

0개의 λŒ“κΈ€