diff --git a/2023/CLOCKSYNC/CLOCKSYNC.csproj b/2023/CLOCKSYNC/CLOCKSYNC.csproj new file mode 100644 index 0000000..f02677b --- /dev/null +++ b/2023/CLOCKSYNC/CLOCKSYNC.csproj @@ -0,0 +1,10 @@ + + + + Exe + net7.0 + enable + enable + + + diff --git a/2023/CLOCKSYNC/CLOCKSYNC.sln b/2023/CLOCKSYNC/CLOCKSYNC.sln new file mode 100644 index 0000000..90448ba --- /dev/null +++ b/2023/CLOCKSYNC/CLOCKSYNC.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.002.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "CLOCKSYNC", "CLOCKSYNC.csproj", "{0270D226-274B-4215-A95A-6CB80FE4E845}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0270D226-274B-4215-A95A-6CB80FE4E845}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0270D226-274B-4215-A95A-6CB80FE4E845}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0270D226-274B-4215-A95A-6CB80FE4E845}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0270D226-274B-4215-A95A-6CB80FE4E845}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {70E32DE1-3D84-498A-BF36-5A5E2EBDBCAC} + EndGlobalSection +EndGlobal diff --git a/2023/CLOCKSYNC/ClockSync.cs b/2023/CLOCKSYNC/ClockSync.cs new file mode 100644 index 0000000..e70a270 --- /dev/null +++ b/2023/CLOCKSYNC/ClockSync.cs @@ -0,0 +1,85 @@ +namespace CLOCKSYNC +{ + public class ClockSync + { + private const int SwitchNumber = 10; + private const int ClockNumber = 16; + private const int Inf = 9999; + + private readonly string[] Linkend = new string[SwitchNumber] + { + "xxx.............", + "...x...x.x.x....", + "....x.....x...xx", + "x...xxxx........", + "......xxx.x.x...", + "x.x...........xx", + "...x..........xx", + "....xx.x......xx", + ".xxxxx..........", + "...xxx...x...x.." + }; + + private readonly int[] _clocks; + + public ClockSync(int[] clocks) + { + _clocks = clocks; + } + + public int Solve() + { + var ret = Solve(0); + + return ret >= Inf ? -1 : ret; + } + + private bool AreAligned() + { + for (int i = 0; i < ClockNumber; i++) + { + if (_clocks[i] != 12) + { + return false; + } + } + + return true; + } + + private void Push(int switchNumber) + { + for (int clockNumber = 0; clockNumber < ClockNumber; clockNumber++) + { + if (Linkend[switchNumber][clockNumber] == 'x') + { + _clocks[clockNumber] += 3; + + if (_clocks[clockNumber] == 15) + { + _clocks[clockNumber] = 3; + } + } + } + } + + private int Solve(int switchNumber) + { + if (switchNumber == SwitchNumber) + { + return AreAligned() ? 0 : Inf; + } + + int ret = Inf; + + for (int count = 0; count < 4; count++) + { + ret = Math.Min(ret, count + Solve(switchNumber + 1)); + + Push(switchNumber); + } + + return ret; + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/Program.cs b/2023/CLOCKSYNC/Program.cs new file mode 100644 index 0000000..be1302d --- /dev/null +++ b/2023/CLOCKSYNC/Program.cs @@ -0,0 +1,21 @@ +namespace CLOCKSYNC +{ + public class Program + { + public static void Main(string[] args) + { + var testCaseNumber = int.Parse(Console.ReadLine()!); + + for (int i = 0; i < testCaseNumber; i++) + { + var input = Console.ReadLine()!; + + var clocks = input.Split(' ').Select(int.Parse).ToArray(); + + var clockSync = new ClockSync(clocks); + + Console.WriteLine(clockSync.Solve()); + } + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.deps.json b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.deps.json new file mode 100644 index 0000000..d53c69b --- /dev/null +++ b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v7.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v7.0": { + "CLOCKSYNC/1.0.0": { + "runtime": { + "CLOCKSYNC.dll": {} + } + } + } + }, + "libraries": { + "CLOCKSYNC/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.dll b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.dll new file mode 100644 index 0000000..ecc41b5 Binary files /dev/null and b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.dll differ diff --git a/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.exe b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.exe new file mode 100644 index 0000000..d8d3557 Binary files /dev/null and b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.exe differ diff --git a/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.pdb b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.pdb new file mode 100644 index 0000000..026f8bd Binary files /dev/null and b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.pdb differ diff --git a/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.runtimeconfig.json b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.runtimeconfig.json new file mode 100644 index 0000000..184be8b --- /dev/null +++ b/2023/CLOCKSYNC/bin/Debug/net7.0/CLOCKSYNC.runtimeconfig.json @@ -0,0 +1,9 @@ +{ + "runtimeOptions": { + "tfm": "net7.0", + "framework": { + "name": "Microsoft.NETCore.App", + "version": "7.0.0" + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.dgspec.json b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.dgspec.json new file mode 100644 index 0000000..be2a7da --- /dev/null +++ b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.dgspec.json @@ -0,0 +1,61 @@ +{ + "format": 1, + "restore": { + "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj": {} + }, + "projects": { + "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj", + "projectName": "CLOCKSYNC", + "projectPath": "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj", + "packagesPath": "C:\\Users\\USER\\.nuget\\packages\\", + "outputPath": "D:\\Algorithm\\2023\\CLOCKSYNC\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\USER\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net7.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.props b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.props new file mode 100644 index 0000000..e8e3e23 --- /dev/null +++ b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.props @@ -0,0 +1,15 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\USER\.nuget\packages\ + PackageReference + 6.6.0 + + + + + \ No newline at end of file diff --git a/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.targets b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.targets new file mode 100644 index 0000000..3dc06ef --- /dev/null +++ b/2023/CLOCKSYNC/obj/CLOCKSYNC.csproj.nuget.g.targets @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs b/2023/CLOCKSYNC/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs new file mode 100644 index 0000000..4257f4b --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")] diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfo.cs b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfo.cs new file mode 100644 index 0000000..ae5a861 --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("CLOCKSYNC")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")] +[assembly: System.Reflection.AssemblyProductAttribute("CLOCKSYNC")] +[assembly: System.Reflection.AssemblyTitleAttribute("CLOCKSYNC")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfoInputs.cache b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfoInputs.cache new file mode 100644 index 0000000..be0806c --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +400f4a149c25c287f61318a5a2bfde42f20f90ab diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GeneratedMSBuildEditorConfig.editorconfig b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 0000000..48458d9 --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,11 @@ +is_global = true +build_property.TargetFramework = net7.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = CLOCKSYNC +build_property.ProjectDir = D:\Algorithm\2023\CLOCKSYNC\ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GlobalUsings.g.cs b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GlobalUsings.g.cs new file mode 100644 index 0000000..8578f3d --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.GlobalUsings.g.cs @@ -0,0 +1,8 @@ +// +global using global::System; +global using global::System.Collections.Generic; +global using global::System.IO; +global using global::System.Linq; +global using global::System.Net.Http; +global using global::System.Threading; +global using global::System.Threading.Tasks; diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.assets.cache b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.assets.cache new file mode 100644 index 0000000..ba0532c Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.assets.cache differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.AssemblyReference.cache b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.AssemblyReference.cache new file mode 100644 index 0000000..f00483c Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.AssemblyReference.cache differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.CoreCompileInputs.cache b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..5053516 --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +28481db4a50264cc9716e7cde768be471088fec8 diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.FileListAbsolute.txt b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..6abe729 --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.csproj.FileListAbsolute.txt @@ -0,0 +1,15 @@ +D:\Algorithm\2023\CLOCKSYNC\bin\Debug\net7.0\CLOCKSYNC.exe +D:\Algorithm\2023\CLOCKSYNC\bin\Debug\net7.0\CLOCKSYNC.deps.json +D:\Algorithm\2023\CLOCKSYNC\bin\Debug\net7.0\CLOCKSYNC.runtimeconfig.json +D:\Algorithm\2023\CLOCKSYNC\bin\Debug\net7.0\CLOCKSYNC.dll +D:\Algorithm\2023\CLOCKSYNC\bin\Debug\net7.0\CLOCKSYNC.pdb +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.csproj.AssemblyReference.cache +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.GeneratedMSBuildEditorConfig.editorconfig +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.AssemblyInfoInputs.cache +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.AssemblyInfo.cs +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.csproj.CoreCompileInputs.cache +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.dll +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\refint\CLOCKSYNC.dll +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.pdb +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\CLOCKSYNC.genruntimeconfig.cache +D:\Algorithm\2023\CLOCKSYNC\obj\Debug\net7.0\ref\CLOCKSYNC.dll diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.dll b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.dll new file mode 100644 index 0000000..ecc41b5 Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.dll differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.genruntimeconfig.cache b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.genruntimeconfig.cache new file mode 100644 index 0000000..e386c3a --- /dev/null +++ b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.genruntimeconfig.cache @@ -0,0 +1 @@ +e76ec4bf4ce9fb70ed9aba0c46506dc602c0d448 diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.pdb b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.pdb new file mode 100644 index 0000000..026f8bd Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/CLOCKSYNC.pdb differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/apphost.exe b/2023/CLOCKSYNC/obj/Debug/net7.0/apphost.exe new file mode 100644 index 0000000..d8d3557 Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/apphost.exe differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/ref/CLOCKSYNC.dll b/2023/CLOCKSYNC/obj/Debug/net7.0/ref/CLOCKSYNC.dll new file mode 100644 index 0000000..0ddee5a Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/ref/CLOCKSYNC.dll differ diff --git a/2023/CLOCKSYNC/obj/Debug/net7.0/refint/CLOCKSYNC.dll b/2023/CLOCKSYNC/obj/Debug/net7.0/refint/CLOCKSYNC.dll new file mode 100644 index 0000000..0ddee5a Binary files /dev/null and b/2023/CLOCKSYNC/obj/Debug/net7.0/refint/CLOCKSYNC.dll differ diff --git a/2023/CLOCKSYNC/obj/project.assets.json b/2023/CLOCKSYNC/obj/project.assets.json new file mode 100644 index 0000000..88d4c8b --- /dev/null +++ b/2023/CLOCKSYNC/obj/project.assets.json @@ -0,0 +1,66 @@ +{ + "version": 3, + "targets": { + "net7.0": {} + }, + "libraries": {}, + "projectFileDependencyGroups": { + "net7.0": [] + }, + "packageFolders": { + "C:\\Users\\USER\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj", + "projectName": "CLOCKSYNC", + "projectPath": "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj", + "packagesPath": "C:\\Users\\USER\\.nuget\\packages\\", + "outputPath": "D:\\Algorithm\\2023\\CLOCKSYNC\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\USER\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net7.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + } + }, + "frameworks": { + "net7.0": { + "targetAlias": "net7.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\7.0.306\\RuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/2023/CLOCKSYNC/obj/project.nuget.cache b/2023/CLOCKSYNC/obj/project.nuget.cache new file mode 100644 index 0000000..182daaf --- /dev/null +++ b/2023/CLOCKSYNC/obj/project.nuget.cache @@ -0,0 +1,8 @@ +{ + "version": 2, + "dgSpecHash": "mKJFVXi4wSMDSGV3pdHadCxlIi+lVCmukG7CuKEw7PdjrrsbBIjwHFuqWRJt0jNp5jYzBWXblQl7raXWQHkvrg==", + "success": true, + "projectFilePath": "D:\\Algorithm\\2023\\CLOCKSYNC\\CLOCKSYNC.csproj", + "expectedPackageFiles": [], + "logs": [] +} \ No newline at end of file