Skip to content

Commit d2314a4

Browse files
committed
algorithm: baekjoon
15961
1 parent 6accad4 commit d2314a4

File tree

3 files changed

+73
-1
lines changed

3 files changed

+73
-1
lines changed

ComputerScience/DataStructures&Algorithms/AlgorithmStudy/AlgorithmStudy.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
6F434A0329F570E300C29485 /* 1427.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F434A0229F570E300C29485 /* 1427.swift */; };
6363
6F4355C529F4E11C00F66672 /* 올바른괄호.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F4355C429F4E11C00F66672 /* 올바른괄호.swift */; };
6464
6F43BCE82E4B43E1008AA79C /* 1644.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F43BCE72E4B43E1008AA79C /* 1644.swift */; };
65+
6F456F5D2F18F31900B382BA /* 15961.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F456F5C2F18F31900B382BA /* 15961.swift */; };
6566
6F46A1C52D93F2CD00C4D5E5 /* 2133.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F46A1C42D93F2C600C4D5E5 /* 2133.swift */; };
6667
6F48B6DA2E1D03BF0039C0F9 /* 27172.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F48B6D92E1D03BF0039C0F9 /* 27172.swift */; };
6768
6F48B6DD2E1D16D30039C0F9 /* 2568.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F48B6DC2E1D16D30039C0F9 /* 2568.swift */; };
@@ -285,6 +286,7 @@
285286
6F434A0229F570E300C29485 /* 1427.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 1427.swift; sourceTree = "<group>"; };
286287
6F4355C429F4E11C00F66672 /* 올바른괄호.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "올바른괄호.swift"; sourceTree = "<group>"; };
287288
6F43BCE72E4B43E1008AA79C /* 1644.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 1644.swift; sourceTree = "<group>"; };
289+
6F456F5C2F18F31900B382BA /* 15961.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 15961.swift; sourceTree = "<group>"; };
288290
6F46A1C42D93F2C600C4D5E5 /* 2133.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 2133.swift; sourceTree = "<group>"; };
289291
6F48B6D92E1D03BF0039C0F9 /* 27172.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 27172.swift; sourceTree = "<group>"; };
290292
6F48B6DC2E1D16D30039C0F9 /* 2568.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = 2568.swift; sourceTree = "<group>"; };
@@ -602,6 +604,7 @@
602604
6F4A95F82DB7E150005F444F /* 투포인터 */ = {
603605
isa = PBXGroup;
604606
children = (
607+
6F456F5C2F18F31900B382BA /* 15961.swift */,
605608
6F4A95F92DB7E154005F444F /* 1806.swift */,
606609
);
607610
path = "투포인터";
@@ -1109,6 +1112,7 @@
11091112
6F48B6DD2E1D16D30039C0F9 /* 2568.swift in Sources */,
11101113
6FB172892B32C83700C14C49 /* 1991.swift in Sources */,
11111114
6FC129D32DE0882A00D79F23 /* 9466.swift in Sources */,
1115+
6F456F5D2F18F31900B382BA /* 15961.swift in Sources */,
11121116
6F78E2DE2A52E0BA00A2CFD3 /* 1092.swift in Sources */,
11131117
6F3CCC692BDF9139004CE236 /* 피로도.swift in Sources */,
11141118
6F4A98372DA907720057CD82 /* 9251.swift in Sources */,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
//
2+
// 15961.swift
3+
// AlgorithmStudy
4+
//
5+
// Created by 박승찬 on 1/15/26.
6+
//
7+
8+
// 슬라이딩 윈도우
9+
func solution15961() {
10+
let fileIO = FileIO()
11+
12+
let n = fileIO.readInt() // 점시의 수
13+
let _ = fileIO.readInt() // 초밥의 가짓 수
14+
let k = fileIO.readInt() // 연속해서 먹는 접시의 수 k
15+
let c = fileIO.readInt() // 쿠폰 번호
16+
17+
var sushies: [Int] = []
18+
19+
for _ in 0..<n {
20+
sushies.append(fileIO.readInt())
21+
}
22+
23+
var ateSushies: [Int: Int] = [:]
24+
25+
for i in 0..<k - 1 {
26+
if let count = ateSushies[sushies[i]] {
27+
ateSushies[sushies[i]] = count + 1
28+
} else {
29+
ateSushies[sushies[i]] = 1
30+
}
31+
}
32+
33+
if let count = ateSushies[sushies[n - 1]] {
34+
ateSushies[sushies[n - 1]] = count + 1
35+
} else {
36+
ateSushies[sushies[n - 1]] = 1
37+
}
38+
39+
var startIndex: Int
40+
var endIndex: Int
41+
var answer: Int = 0
42+
43+
for i in 0..<n {
44+
endIndex = (i + k - 1) % n
45+
startIndex = (i + n - 1) % n
46+
47+
if let sushiCount = ateSushies[sushies[startIndex]] {
48+
ateSushies[sushies[startIndex]] = sushiCount == 1 ? nil: sushiCount - 1
49+
}
50+
51+
if let sushiCount = ateSushies[sushies[endIndex]] {
52+
ateSushies[sushies[endIndex]] = sushiCount + 1
53+
} else {
54+
ateSushies[sushies[endIndex]] = 1
55+
}
56+
57+
if let _ = ateSushies[c] {
58+
answer = max(answer, ateSushies.count)
59+
} else {
60+
answer = max(answer, ateSushies.count + 1)
61+
}
62+
}
63+
64+
print(answer)
65+
66+
}

ComputerScience/DataStructures&Algorithms/AlgorithmStudy/AlgorithmStudy/main.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -692,4 +692,6 @@ func solution13460() {
692692

693693
//solution2831()
694694

695-
solution20366()
695+
//solution20366()
696+
697+
solution15961()

0 commit comments

Comments
 (0)