함수

인생노잼시기·2021년 5월 27일
0

😨코딩테스트

목록 보기
6/18

4673

4673
셀프넘버 구하기
Set는 중복되지 않고 contains하지 않으면 print한다

var notSelfNumArr: Set<Int> = []

func d(_ value: Int) -> Int {
    var value = value
    var notSelfNum = value
    while value != 0 {
        notSelfNum += (value % 10)
        value /= 10
    }
    return notSelfNum
}

for i in 1 ... 10000 {
    notSelfNumArr.insert(d(i))
}

for i in 1 ... 10000 {
    if !notSelfNumArr.contains(i) {print(i)}
}

1065

1065
한수 구하기
123 처럼 일의 자리, 십의 자리, 백의 자리 각각의 숫자가 등차수열
(firstNum + thirdNum) / 2 == secondNum

let n:Int = Int(readLine()!)!

var answer: Int = 0

for i in 1 ... n {
    if i < 100 {
        answer += 1
    } else {
        let units: Int = i % 10
        let tens: Int = i % 100 / 10
        let hundreds: Int = i / 100
        if (hundreds - tens) == (tens - units) {
            answer += 1
        }
    }
}

print(answer)

게임 개발

구현하기
global변수 이런건 없고
그냥 밖에 var로 선언해서
변경하면서 써야하나부다

//북:0, 동:1, 남:2, 서: 3
//육지:0, 바다:1
let nm = readLine()!.split(separator: " ").map { Int(String($0))! }
let n = nm[0]
let m = nm[1]

let xyd = readLine()!.split(separator: " ").map { Int(String($0))! }
var x = xyd[0]  //x좌표
var y = xyd[1]  //y좌표
let d = xyd[2]  //방향

var map = [[Int]]()
for _ in 0..<m {
    let data = readLine()!.split(separator: " ").map { Int(String($0))! }
    map.append(data)
}

//방문위치 저장
var visited = [[Int]](repeating: [Int](repeating: 0, count: n), count: m)
visited[x][y] = 1   //방문처리

//북동남서
let dx = [-1, 0, 1, 0]
let dy = [0, 1, 0, -1]

//왼쪽으로 회전
func turnLeft() {
    direction -= 1
    if direction == -1 {
        direction = 3
    }
}

//방문한 칸의 수
var count = 1
//방향
var direction = d
//한 칸당 체크할 모서리
var turnTime = 0

while true {
    //왼쪽으로 회전하기
    turnLeft()
    var nx = x + dx[direction]
    var ny = y + dy[direction]
    
    //가보지 않은 칸이 존재하고 육지인 경우
    if visited[nx][ny] == 0 && map[nx][ny] == 0 {
        visited[nx][ny] = 1     //방문처리
        x = nx
        y = ny
        count += 1
        turnTime = 0
        continue
    //가봤거나 바다인 경우
    } else {
        turnTime += 1
    }
        
    //네 방향 모두 갈 수 없는 경우
    if turnTime == 4 {
        //바라보는 방향 변경하기
        nx = x - dx[direction]
        ny = y - dy[direction]
        
        //뒤로 갈 수 있으면(육지이면) 뒤로 가기
        if map[nx][ny] == 0 {
            x = nx
            y = ny
        //바다라면
        } else {
            break
        }
        //1단계로 돌아가기
        turnTime = 0
    }
}

print(count)
profile
인생노잼

0개의 댓글