Dev.YoungKyu
YoungKyu's Devlog
전체 방문자
오늘
어제
  • 분류 전체보기 N
    • 부스트캠프
    • iOS N
    • visionOS
    • Backend
    • 알고리즘
    • CS
    • Git
    • Python
    • 끄적끄적

블로그 메뉴

  • 홈
  • 🌝 티스토리 홈
  • ⭐️ 깃허브
  • 태그

공지사항

인기 글

최근 댓글

최근 글

태그

  • 백준
  • AVAudioSession
  • constraint
  • Python
  • CS
  • 모듈화
  • 소프트웨어 공학
  • ImageResource
  • AutoLayout
  • guard
  • swift
  • image
  • 부스트캠프
  • Optional
  • 소프트웨어 테스트
  • if let
  • MVC
  • Concurrency
  • 알고리즘
  • boj
  • 소프트웨어공학
  • jekyll
  • 티스토리챌린지
  • Git
  • Animation
  • 오블완
  • Swift5.7
  • ios
  • alamofire
  • SwiftUI

티스토리

hELLO · Designed By 정상우.
Dev.YoungKyu
알고리즘

[백준 BOJ] BOJ-1018 체스판 다시 칠하기

알고리즘

[백준 BOJ] BOJ-1018 체스판 다시 칠하기

2022. 9. 18. 20:41

#1018 체스판 다시 칠하기

문제 정리

imageimage

 

풀이


  
import Foundation
// 정답 체스판 경우의 수
var correctBoard1: [[Character]] = []
var correctBoard2: [[Character]] = []
for _ in 0..<4 {
correctBoard1.append(["B","W","B","W","B","W","B","W"])
correctBoard1.append(["W","B","W","B","W","B","W","B"])
correctBoard2.append(["W","B","W","B","W","B","W","B"])
correctBoard2.append(["B","W","B","W","B","W","B","W"])
}
let nm = readLine()!.split(separator: " ").map { Int($0)! }
var board: [[Character]] = []
var output = 32
// 보드 입력 받기
for _ in 0..<nm[0] {
let input = readLine()!.map { $0 }
board.append(input)
}
// i, j는 8x8의 시작지점 // k, l은 시작지점부터 8칸
for i in 0...(nm[0] - 8) {
for j in 0...(nm[1] - 8) {
var drawCount1 = 0
var drawCount2 = 0
// 8x8씩 검사
for k in i..<(i + 8) {
for l in j..<(j + 8) {
if board[k][l] == correctBoard1[k-i][l-j] {
drawCount1 += 1
}
if board[k][l] == correctBoard2[k-i][l-j] {
drawCount2 += 1
}
}
}
output = min(output, (drawCount1 < drawCount2 ? drawCount1 : drawCount2))
}
}
// 정답 출력
print(output)
  1. W 부터 시작하는 경우와 B 부터 시작하는 경우의 정답 체스판을 만듬
  2. 반복문으로 8x8 씩 검사하여 각 경우에 대해 다시 그려야하는 갯수를 구함
  3. 둘 중 더 작은 값이 적게 칠하는 횟수가 됨

 

풀고나서 알게된 것

처음에 String 배열로 만들어서 한 행씩 비교하는 방법으로 접근했는데, Swift에선 문자열 subscript가 안된다는 걸 이번에 확실하게 알게 되었다ㅜ


  
let str = "Hello World!"
print(str[1]) // Error
let str = "Hello World!"
print(str[str.index(str.startIndex, offsetBy: 1)]) // e

처음 접근한 방식의 코드가 길어지다보니 공들인 시간이 아까워서 Character 형의 2차원배열로 접근한다는 생각을 못했던 것 같다.

알고리즘 문제를 풀때도 성격이 나타난다.. 고집을 버리자 !

저작자표시 (새창열림)

'알고리즘' 카테고리의 다른 글

[프로그래머스] PRG-JadenCase 문자열 만들기  (0) 2022.09.19
[백준 BOJ] BOJ -2309 일곱 난쟁이  (0) 2022.09.18
[백준 BOJ] BOJ-8393 합  (0) 2022.09.18
[백준 BOJ] BOJ-7568 덩치  (0) 2022.09.18
[백준 BOJ] BOJ-1920 수 찾기  (0) 2022.09.18
  • 문제 정리
  •  
  • 풀이
  •  
  • 풀고나서 알게된 것
'알고리즘' 카테고리의 다른 글
  • [프로그래머스] PRG-JadenCase 문자열 만들기
  • [백준 BOJ] BOJ -2309 일곱 난쟁이
  • [백준 BOJ] BOJ-8393 합
  • [백준 BOJ] BOJ-7568 덩치
Dev.YoungKyu
Dev.YoungKyu
iOS를 공부하고 있습니다

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.