[Algorithm] 프로그래머스 - 시소 짝궁 (Swift)

2024. 4. 4. 09:30· → Problems
목차
  1. 문제 설명
  2. 문제 풀이

문제 설명

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

시소 짝궁을 구하는 문제인데, 시소의 길이는 2, 3, 4가 있다. 만약 무게가 [100,180,360,100,270] 라고 한다면 [100, 100]은 시소 짝궁이 되고, [180, 360]도 4, 2길이에 앉게된다면 시소 짝궁이 된다.

 

문제 풀이

무게의 배열이 10만개가 주어지기 때문에 이중 for문을 하기에는 시간초과가 확실했다. 어떻게 하면 for문을 중복해서 사용하지 않을 수 있을까? 생각보다 정말 간단하게 접근이 가능했다. 우선 same 배열, multi 배열을 만들어서 무게의 최댓값이 1000이기 때문에 same 배열은 1001개 multi 배열은 4001개를 만들어서 index를 통해 각 무게를 계산하여 횟수를 넣었다. 그리고 핵심은 나중에 정답에 나누기 2를 하는 것이다.

import Foundation

func solution(_ weights:[Int]) -> Int64 {
    var answer = 0
    var same = Array(repeating: 0, count: 1001)
    var multi = Array(repeating: 0, count: 4001)
    
    for weight in weights {
        let m = weight
        let m2 = weight * 2
        let m3 = weight * 3
        let m4 = weight * 4
        
        same[m] += 1
        multi[m2] += 1
        multi[m3] += 1
        multi[m4] += 1
    }
    
    for weight in weights {
        let m = weight
        let m2 = weight * 2
        let m3 = weight * 3
        let m4 = weight * 4
        
        answer += same[m] - 1
        answer += multi[m2] - same[m]
        answer += multi[m3] - same[m]
        answer += multi[m4] - same[m]
    }
    
    return Int64(answer / 2)
}

'→ Problems' 카테고리의 다른 글

[Algorithm] 백준 - 10799번 쇠막대기 (Swift) (텍스트 대치)  (0) 2024.04.13
[Algorithm] 프로그래머스 - 디펜스 게임 (Swift) (Heap, Parametric Search)  (0) 2024.04.05
[Algorithm] 프로그래머스 - 뒤에 있는 큰 수 찾기 (Swift)  (1) 2024.04.03
[Algorithm] 프로그래머스 - 미로 탈출 (Swift) (DFS, BFS)  (0) 2024.04.03
[Algorithm] 프로그래머스 - 배달 (Swift) (플로이드 워셜, DFS)  (0) 2024.03.28
  1. 문제 설명
  2. 문제 풀이
'→ Problems' 카테고리의 다른 글
  • [Algorithm] 백준 - 10799번 쇠막대기 (Swift) (텍스트 대치)
  • [Algorithm] 프로그래머스 - 디펜스 게임 (Swift) (Heap, Parametric Search)
  • [Algorithm] 프로그래머스 - 뒤에 있는 큰 수 찾기 (Swift)
  • [Algorithm] 프로그래머스 - 미로 탈출 (Swift) (DFS, BFS)
Swift librarian
Swift librarian
Swift librarian
Swift Library
Swift librarian
전체
오늘
어제
  • 분류 전체보기 (231)
    • 📺 Programming (5)
    • → Architecture (2)
    • → Design Pattern (0)
    • → Computer Science (15)
    • ⚙️ Algorithm (0)
    • → 알고리즘 관련 (22)
    • → Problems (104)
    • 🚀 Project (0)
    • → 알쏭달쏭 (0)
    • → Shook (2)
    • → Solver (8)
    • → Taster (7)
    • → Outline (4)
    • → Pointer (2)
    • → Guesser (3)
    • 🦜 Swift (2)
    • → Swift Archive (12)
    • → Swift Study (12)
    • → Xcode (6)
    • 🧰 Framework (0)
    • → Foundation (1)
    • → UIKit (2)
    • → SwiftUI (3)
    • → CoreData (2)
    • → MapKit (1)
    • → CoreHaptic (1)
    • → User Notification (1)
    • → StoreKit (2)
    • 🏛️ Library (0)
    • → TCA (0)
    • 🐈‍⬛ Git (8)
    • → Git의 원리 (2)
    • → Git 심화 (1)
    • 📦 Other (1)
    • 👦🏻 Log (0)

최근 글

hELLO · Designed By 정상우.v4.2.2
Swift librarian
[Algorithm] 프로그래머스 - 시소 짝궁 (Swift)
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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