반응형
LinkedIn
개발자로 성장하면서 남긴 발자취들을 확인하실 수 있습니다.
Github
WWDC Student Challenge 및 Cherish, Tiramisul 등 개발한 앱들의 코드를 확인하실 수 있습니다.
개인 앱 : Cherish
내 마음을 들여다보는 시간, 체리시는 디자이너와 PM과 함께 진행 중인 1인 개발 프로젝트입니다.
10년 후, 20년 후 나는 어떤 스토리 텔러가 되어 있을지 궁금하다. 내가 만약에 아직 조금 더 탐구하고 싶은 게 있고, 궁금한 게 있다면, 그게 설사 지금 당장의 내 인생에 도움이 안 되는 것 같더라도 경험해보자. 그 경험들을 온전히 즐기며 내 것으로 만들고, 내 일에 녹여내고... 그러다보면 그 점들이 모여 나란 사람을 그려내는 선이 될 테니까.
Recent Posts
Recent Comments
- Total
꿈꾸는리버리
[Swift][백준 알고리즘] 3085 사탕 게임 본문
반응형
문제:
https://www.acmicpc.net/problem/3085
문제의 이해
< 문제의 이해 >
기존의 행렬에서
CKP
KCP
KPC
1행의 [0]과 [1]을 swap 했을 때
KCP
KCP
KPC
-> 원래 코드에서는 사탕의 최대 개수는 2인데, 1행의 [0]과 [1]을 swap을 한다면 사탕의 최대 개수는 3이 된다.
풀이방법:
1) 원래 코드의 사탕의 최대 개수 구하기
2) 행 swap 후 사탕의 최대 개수 구하기
3) 열 swap 후 사탕의 최대 개수 구하기
참고 Point
1) "CCP"처럼 붙어있는 문자열 떼어내서 Char 저장하기
array2.append(readLine()!.map { ($0) })
2) SwapAt 함수 이용하기 ( 행 내에서 swap시에 )
Array.swapAt(0,1)
-> Array 자체의 [0]의 요소와 [1]의 요소를 Swap해준다.
3) max 함수 이용하기
max(A,B)
-> A와 B 중 큰 값을 반환한다. 비교 대상이 2개로 한정이 되는게 아니라 여러 개를 넣어서 최대값을 구할 수도 있다.
작성한 코드는 다음과 같다.
import Foundation
let n = Int(readLine()!)!
var inputArray : [[Character]] = []
var maxCount : Int = 0
//// 2차원 배열로 저장 [["C", "C", "P"], ["C", "C", "P"], ["P", "P", "C"]]
for _ in 0..<n {
inputArray.append(readLine()!.map { ($0) })
}
//1. 처음 기존의 값에서 maxCount 계산
maxCount = countArray(inputArray: inputArray)
for i in 0..<n{
for j in 0..<n-1{
//행 안에서 바꾸기
inputArray[i].swapAt(j,j+1)
maxCount = max(countArray(inputArray: inputArray),maxCount)
inputArray[i].swapAt(j,j+1)
//열 안에서 바꾸기
var temp = inputArray[j][i]
inputArray[j][i] = inputArray[j+1][i]
inputArray[j+1][i] = temp
maxCount = max(countArray(inputArray: inputArray),maxCount)
temp = inputArray[j][i]
inputArray[j][i] = inputArray[j+1][i]
inputArray[j+1][i] = temp
}
}
print(maxCount)
func countArray(inputArray: [[Character]]) -> Int {
// 행 검사
var count = 1
var result : Int = count
for i in 0..<n{
count = 1
for j in 0..<n-1{
if(inputArray[i][j] == inputArray[i][j+1]){
count += 1
}else{
count = 1
}
result = max(result, count)
}
}
// 열 검사
for i in 0..<n{
count = 1
for j in 0..<n-1{
if(inputArray[j][i] == inputArray[j+1][i]){
count += 1
}else{
count = 1
}
result = max(result, count)
}
}
return result
}
성공한 사진!
MEMO
어디서 틀렸는지를 몰라서 한참을 헤맸다... 이럴 때는 좀 쉬고 다시 코드를 작성해 보는 것도 하나의 방법인 것 같다. 왜 저런 실수를 했지? 싶었지만, 그 안에서는 보이지 않는 다는 게 함정이지.. ㅋㅋㅋ 화이팅이다. 꾸준히 가자 리버야 !
반응형
'오뚝이 개발자 > 알고리즘' 카테고리의 다른 글
[Swift][백준 알고리즘] 15649 N과 M (1) (0) | 2022.04.26 |
---|---|
[swift][백준 알고리즘] 6064 카잉 달력 (0) | 2022.04.20 |
[Swift][백준 알고리즘] 1107 리모컨 (0) | 2022.04.13 |
[백준 알고리즘] 2750 수 정렬하기 (0) | 2021.12.06 |
[백준 알고리즘] 1436 영화감독 숌 (0) | 2021.12.06 |
Comments