티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/42860
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
딱 봤을때 쉬워 보였는데 생각보다 더더더 어려웠네요
우선 알파벳 바꾸는 횟수는 정해져 있으므로 먼저 계산해주고 시작했습니다
문제는 좌,우 이동 횟수인데요 항상 왼쪽으로 가거나, 오른쪽으로 가거나가 아니라 가다가 돌아갈수도 있는 상황이 발생해서 골치아픕니다
이 부분은 제가 푸는 로직이 안맞아서 풀다 풀다 찾아봤는데 이분 포스팅 보고 이해했습니다. 그림으로까지 잘 설명해주셨으니 보시면 이해하는데 많은 도움이 될거라고 생각해요
https://inuplace.tistory.com/1091
[알고리즘 연습] 조이스틱 (프로그래머스 lv2, 스위프트)
문제 https://programmers.co.kr/learn/courses/30/lessons/42860?language=swift 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이
inuplace.tistory.com
import Foundation
func solution(_ name:String) -> Int {
var ans = 0
let name = name.map({$0})
for i in 0..<name.count {
if name[i] != "A" {
let up = name[i].asciiValue! - 65
let down = 91 - name[i].asciiValue!
ans += Int((up<down) ? up : down)
}
}
var minMove = name.count - 1
for startIdx in 0..<name.count {
var endIdx = startIdx + 1
while endIdx < name.count && name[endIdx] == "A" {
endIdx += 1
}
let moveFront = startIdx * 2 + (name.count - endIdx)
let moveBack = (name.count - endIdx) * 2 + startIdx
minMove = min(minMove, moveFront)
minMove = min(minMove, moveBack)
}
return ans + minMove
}
print(solution("JAZ"))
'Algorithm' 카테고리의 다른 글
Algorithm) Programmers- 순위 검색 swift (0) | 2022.11.28 |
---|---|
Algorithm) Programmers-N-Queen swift (0) | 2022.11.24 |
Algorithm) 아스키코드 변환 swift (0) | 2022.11.24 |
Algorithm) Programmers-후보키 swift (0) | 2022.11.23 |
Algorithm) Programmers Level2- 하노이 탑 c++ (0) | 2022.11.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- UIKit
- 도둑질
- 마법사 상어와 파이어스톰
- swea
- 알고리즘
- Xcode
- ios
- swift
- 3000
- 3차원 농부
- 문자열 교집합
- Algorithm
- C++
- 단속카메라
- 입국심사
- 백준 20058
- 8898
- programmers
- programmres
- 코딩테스트
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함