whdvy3   2년 전

열심히 풀어보다가 예제의 답을 도출해내는데 성공하였으나, 정답이 아닙니다.

혹시 제가 어느부분을 잘못했을까요..

여러예제를 넣어봤지만 잘못된 예제를 찾지못하였습니다.

어느 예제를 넣어봐야 제가 잘못한부분을 개선할 수 있을까요..

nhg1113   2년 전

썩 잘하는 편은 아니지만, 제가 감히 한번 코드를 봐드리겠습니다.

문제 외의 것부터 같이 말씀 드리겠습니다.

1. 입력

일단 입력 받는 부분부터 말씀드리겠습니다.

7번 라인 부터 14번 라인이 입력받는 부분으로 보이는데,

readLine()!으로 String을 받고, String을 하나씩 for문으로 쪼개서 입력한 부분이 보였습니다.

하지만 이보다 더 편한 방법이 있는데, 바로 Array()와 map을 사용하는 방법입니다.

Array(readLine()!) 

readLine()!.map { String($0) }

이 두 코드 함수의 반환 값은 배열입니다.

따라서 굳이 x, y축을 다 돌면서 직접 입력할 필요 없이, 

y축만 돌면서 배열을 넣어주면 됩니다.

for i in 0..<N {

    arr[i] = readLine()!.map { String($0) }

}

이런 식으로 말이죠.

2. 17번 라인 ~ 26번 라인

제가 해석하기론, 만약에 모든 가로줄이 일치하면 최댓값을 배열 사이즈인 n을 넣어준다 입니다.

이 부분은 크게 문제될 부분은 아닌 것 같은데, 최댓값이 어떤 값인지를 알았는데 그 뒤에 코드를 계속 실행시키는 부분이 약간 의아했습니다.

import Foundation 을 하게 되면, exit(0)라는 코드를 통해 프로그램을 종료시킬 수 있습니다.

이를 사용하면 조금 더 효율적인 코드가 될 거 같습니다.

3. 28번 라인 ~ 66번 라인

3

CPZ

PCP

ZZC

답: 3 출력: 2

이 예제를 넣었을 때 가장 위에 있는 P를 아래로 옮기면

CCZ

PPP

ZZC

가 되어 답이 3이 돼야 합니다.

하지만 코드를 보니 오른쪽만 바꿔보게 되어있습니다. 아래는 바꿔보지 않게 되어있습니다.

아무래도 i와 j를 바꾼건 제대로 했는데, 어떤 인덱스와 비교하는 지가 잘못 된 것 같습니다.

첫번째 for문이 오른쪽을 검사하는 거라고 한다면, 두번째 for문에 해당하는 54번 라인부터 아래와 바꾸게 고치면 정상적으로 작동할 것 같습니다.

4. 72번 라인 ~ 103번 라인 height()와 width() 함수

최댓값을 비교할 때 삼항연산자를 쓰셨는데, 사실 이 부분은 자유긴 합니다.

그런데 swift에는 max 함수가 있어서 굳이 max함수를 구현하지 않아도 됩니다.

지금같이 값이 두개일 때는 삼항연산자를 이용해 한 줄로 구현이 가능하지만, 값이 세개가 되면 삼항연산자를 써도 한 줄로 구현이 힘듭니다.

값이 세 개가 넘어가게 된다면, 그냥 이렇게

value1 = max(value1, value2, value3)

사용하면 더 편하게 사용할 수 있을 것 같습니다.

whdvy3   2년 전

정말 너무 감사드립니다..

주변에 Swift하는 사람도 없어서 그저 막막했는데,,

이렇게 관심가져주시고 피드백주셔서 정말 감사드립니다 ㅠㅠ

댓글을 작성하려면 로그인해야 합니다.