<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://teferi.net/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://teferi.net/feed.php">
        <title>테페리넷 - ps:problems:boj</title>
        <description></description>
        <link>https://teferi.net/</link>
        <image rdf:resource="https://teferi.net/_media/wiki/dokuwiki.svg" />
       <dc:date>2026-05-05T04:33:41+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1002?rev=1632875348&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1004?rev=1645720937&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1009?rev=1642064334&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1010?rev=1629644826&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1013?rev=1741355591&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1018?rev=1668652767&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1021?rev=1651560306&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1025?rev=1645721588&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1033?rev=1729837972&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1036?rev=1622738216&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1037?rev=1654012370&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1065?rev=1636960708&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1067?rev=1620232387&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1069?rev=1645116182&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1135?rev=1636132908&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1153?rev=1658565472&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1157?rev=1636981831&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1158?rev=1651561646&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1167?rev=1610896466&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1168?rev=1628350205&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1179?rev=1628260043&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1182?rev=1637070251&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1197?rev=1635085151&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1208?rev=1632919090&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1214?rev=1741655710&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1219?rev=1632409793&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1238?rev=1663691904&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1261?rev=1663831527&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1275?rev=1657247456&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1280?rev=1657247425&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1300?rev=1626708833&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1305?rev=1671181853&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1316?rev=1637251624&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1321?rev=1622218538&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1323?rev=1770342700&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1351?rev=1657003825&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1365?rev=1657246417&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1395?rev=1620134648&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1406?rev=1651561685&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1412?rev=1771032130&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1422?rev=1622558321&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1424?rev=1671362610&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1427?rev=1629815257&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1431?rev=1649500696&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1439?rev=1642004301&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1449?rev=1649865449&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1456?rev=1649503233&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1457?rev=1623297417&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1476?rev=1652326206&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1492?rev=1675958690&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1504?rev=1663576932&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1517?rev=1622040059&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1521?rev=1689434098&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1542?rev=1689176366&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1572?rev=1656481783&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1603?rev=1687702637&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1620?rev=1656988125&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1624?rev=1643173319&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1629?rev=1627488614&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1640?rev=1690215110&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1644?rev=1658545792&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1647?rev=1666081253&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1654?rev=1650635033&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1655?rev=1627663663&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1659?rev=1770801254&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1667?rev=1665649181&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1676?rev=1769415975&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1687?rev=1772633391&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1689?rev=1685414128&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1693?rev=1636124652&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1699?rev=1679323553&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1700?rev=1695623104&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1707?rev=1680620067&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1711?rev=1739888378&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1715?rev=1657037580&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1717?rev=1634483505&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1738?rev=1632410300&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1739?rev=1667489407&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1753?rev=1663349422&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1759?rev=1642169118&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1766?rev=1633713379&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1774?rev=1665164330&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1781?rev=1649863587&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1786?rev=1608999089&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1818?rev=1766033240&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1826?rev=1707364601&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1842?rev=1689178241&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1851?rev=1646411162&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1865?rev=1632409106&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1877?rev=1693213515&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1912?rev=1653841195&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1916?rev=1663348518&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1918?rev=1606482726&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1919?rev=1640262213&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1920?rev=1626708776&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1922?rev=1666081201&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1927?rev=1657244642&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1932?rev=1624971498&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1944?rev=1666082699&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1947?rev=1774519090&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1948?rev=1633711930&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1960?rev=1644163422&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1963?rev=1642781852&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1966?rev=1628759773&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1967?rev=1610896508&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1974?rev=1768111326&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1976?rev=1634483540&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1978?rev=1654159582&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1990?rev=1680251935&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1992?rev=1627399842&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/1994?rev=1693535773&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2014?rev=1657244551&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2015?rev=1656779498&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2041?rev=1647408725&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2042?rev=1657245069&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2051?rev=1647426043&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2056?rev=1607007672&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2075?rev=1657037610&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2087?rev=1692334833&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2096?rev=1639231518&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2108?rev=1629816742&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2110?rev=1626708819&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2133?rev=1627748047&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2150?rev=1666337042&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2151?rev=1642920181&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2161?rev=1628176920&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2164?rev=1628242670&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2166?rev=1681709218&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2169?rev=1637345892&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2180?rev=1684911244&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2190?rev=1695632596&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2193?rev=1640261605&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2207?rev=1667494189&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2212?rev=1643386072&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2217?rev=1640971441&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2225?rev=1640970925&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2230?rev=1638929151&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2247?rev=1623255710&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2263?rev=1641315550&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2268?rev=1657246197&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2287?rev=1657009383&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2292?rev=1633456931&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2293?rev=1741789707&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2322?rev=1646411321&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2342?rev=1633706008&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2343?rev=1643472259&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2346?rev=1651561660&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2370?rev=1695214334&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2373?rev=1686839942&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2381?rev=1732005628&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2385?rev=1622561964&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2407?rev=1611077513&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2437?rev=1643779691&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2457?rev=1639502155&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2458?rev=1631028328&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2467?rev=1631809854&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2470?rev=1631886279&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2473?rev=1631886106&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2517?rev=1622024733&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2559?rev=1668738148&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2569?rev=1646411451&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2574?rev=1624278436&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2575?rev=1693212806&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2609?rev=1654161714&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2623?rev=1606324184&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2630?rev=1627487257&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2631?rev=1766032566&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2671?rev=1741356168&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2696?rev=1657037801&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2739?rev=1635780272&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2740?rev=1625758849&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2749?rev=1711636559&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2750?rev=1629821081&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2751?rev=1630397688&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2753?rev=1634315376&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2773?rev=1740324686&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2775?rev=1633177707&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2805?rev=1626708811&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2812?rev=1642521320&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2820?rev=1620124806&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2839?rev=1633109420&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2840?rev=1651561671&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2847?rev=1642779140&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2862?rev=1686838396&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2869?rev=1643248543&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2870?rev=1741360001&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2887?rev=1666081288&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2912?rev=1620092866&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2927?rev=1622217723&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2941?rev=1636982448&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2981?rev=1634665068&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/2982?rev=1647409502&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3000?rev=1739891907&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3008?rev=1739885430&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3009?rev=1632870346&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3036?rev=1629646539&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3067?rev=1694595420&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3079?rev=1624932218&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3107?rev=1643031901&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3142?rev=1708658256&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3152?rev=1705977462&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3176?rev=1670509693&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3190?rev=1651570590&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3273?rev=1631810967&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3344?rev=1638289494&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3358?rev=1689173035&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3373?rev=1744210881&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3408?rev=1624028238&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3474?rev=1771483896&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3614?rev=1769322774&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3648?rev=1667835816&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3653?rev=1657248006&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3663?rev=1642436458&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3665?rev=1632990024&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3679?rev=1682488662&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3745?rev=1657246363&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3747?rev=1667838316&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3754?rev=1690034990&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3860?rev=1632403241&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3964?rev=1774970531&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/3973?rev=1761811985&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4148?rev=1689951144&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4153?rev=1632870449&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4181?rev=1682487434&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4195?rev=1656064917&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4230?rev=1667489254&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4256?rev=1641315930&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4343?rev=1666081275&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4344?rev=1636983922&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4354?rev=1671201633&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4355?rev=1675840739&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4370?rev=1687324668&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4373?rev=1652445028&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4386?rev=1666081267&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4414?rev=1774969399&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4464?rev=1769951724&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4485?rev=1663605554&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4618?rev=1761892854&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4673?rev=1636960845&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4792?rev=1634736672&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/4913?rev=1679322086&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5000?rev=1763016012&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5012?rev=1622039921&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5051?rev=1613662030&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5052?rev=1621704154&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5345?rev=1741354699&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5386?rev=1654652370&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5397?rev=1651566938&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5419?rev=1620232533&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5430?rev=1628514989&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5498?rev=1675065582&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5508?rev=1689830928&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5525?rev=1628515667&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5670?rev=1610426416&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5910?rev=1690508947&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5942?rev=1632506852&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/5981?rev=1716995395&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6000?rev=1688567965&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6002?rev=1632408148&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6064?rev=1652324571&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6087?rev=1663860691&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6156?rev=1631028084&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6209?rev=1643473710&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6219?rev=1658546942&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6223?rev=1646411572&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6384?rev=1681711924&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6458?rev=1741270137&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6497?rev=1667809164&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6515?rev=1620650472&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6543?rev=1665737174&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6574?rev=1771569048&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6656?rev=1769044279&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/6744?rev=1739979615&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7041?rev=1665846338&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7044?rev=1665652172&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7045?rev=1665553945&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7469?rev=1620051464&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7490?rev=1644163265&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7535?rev=1667835707&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7568?rev=1633452709&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7569?rev=1626942750&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7570?rev=1642169890&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7576?rev=1626941841&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7654?rev=1702475512&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7662?rev=1656470076&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7685?rev=1657680618&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7694?rev=1681710171&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7744?rev=1690509069&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7785?rev=1640957353&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7806?rev=1769416804&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7869?rev=1645088415&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/7977?rev=1770466986&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8017?rev=1772633421&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8055?rev=1702619916&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8096?rev=1757599670&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8170?rev=1717170115&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8187?rev=1769955003&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8229?rev=1651135245&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8314?rev=1771032536&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8318?rev=1702477692&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8462?rev=1620124995&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8817?rev=1690029363&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8841?rev=1740313008&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8898?rev=1648456606&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/8907?rev=1757600790&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9012?rev=1739711071&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9019?rev=1629650764&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9024?rev=1632232904&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9078?rev=1763018375&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9079?rev=1642778561&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9084?rev=1694595180&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9184?rev=1643250110&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9326?rev=1691566897&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9342?rev=1741356696&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9345?rev=1658857302&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9372?rev=1635085670&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9373?rev=1666081306&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9375?rev=1627320317&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9426?rev=1656481985&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9461?rev=1691136687&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9466?rev=1634659957&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9472?rev=1774532553&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9498?rev=1634315213&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9613?rev=1654160889&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9655?rev=1686553137&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9656?rev=1686553464&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9657?rev=1686718892&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9658?rev=1686719063&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9659?rev=1686554437&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9660?rev=1686758560&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9663?rev=1607489562&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9693?rev=1771483914&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9702?rev=1768116627&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/9938?rev=1656405373&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10090?rev=1627746703&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10167?rev=1619795646&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10211?rev=1654007060&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10247?rev=1730273264&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10250?rev=1633454051&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10274?rev=1690467457&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10360?rev=1632590661&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10422?rev=1611243363&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10531?rev=1620232398&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10546?rev=1651571022&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10547?rev=1769413486&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10632?rev=1688481532&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10651?rev=1624984253&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10773?rev=1684233624&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10775?rev=1642063704&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10806?rev=1678675226&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10809?rev=1636293204&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10814?rev=1629680601&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10815?rev=1645169456&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10816?rev=1626708789&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10825?rev=1649500548&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10828?rev=1634314783&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10830?rev=1627488227&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10845?rev=1634314472&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10866?rev=1634314940&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10868?rev=1634318169&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10942?rev=1625418179&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10975?rev=1643032714&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10978?rev=1774519715&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10986?rev=1668736632&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10989?rev=1630399490&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/10999?rev=1620124921&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11000?rev=1642866286&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11003?rev=1656773198&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11004?rev=1609694513&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11012?rev=1620232469&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11025?rev=1628259536&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11046?rev=1625417176&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11049?rev=1615437969&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11050?rev=1611071125&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11051?rev=1611071892&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11052?rev=1640939733&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11053?rev=1640261185&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11054?rev=1768664166&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11055?rev=1640260928&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11066?rev=1615218420&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11085?rev=1634213058&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11090?rev=1772635507&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11164?rev=1743758139&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11279?rev=1657244575&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11280?rev=1667838338&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11281?rev=1667838356&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11286?rev=1657244597&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11307?rev=1690031195&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11328?rev=1640263093&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11385?rev=1617449306&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11401?rev=1611071916&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11402?rev=1612113527&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11404?rev=1710405199&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11414?rev=1654916370&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11437?rev=1675953226&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11438?rev=1670504626&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11439?rev=1612108748&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11440?rev=1676278149&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11441?rev=1654007093&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11444?rev=1711636586&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11501?rev=1640941276&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11505?rev=1658858322&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11548?rev=1656986257&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11652?rev=1649500182&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11653?rev=1654155203&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11657?rev=1632408106&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11659?rev=1668736559&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11660?rev=1668736650&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11689?rev=1654158800&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11694?rev=1687312883&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11695?rev=1654654314&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11720?rev=1633704221&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11722?rev=1624984789&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11725?rev=1606491471&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11726?rev=1627749035&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11727?rev=1627749140&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11728?rev=1631807141&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11757?rev=1689256208&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11778?rev=1651138610&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11866?rev=1628516986&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11868?rev=1653631539&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11869?rev=1653631282&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11871?rev=1653631068&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11872?rev=1653754248&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11873?rev=1772633683&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11899?rev=1739712932&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11931?rev=1630398917&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11969?rev=1654007074&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/11997?rev=1654010800&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12015?rev=1657245010&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12018?rev=1769691609&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12107?rev=1686554869&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12108?rev=1689323246&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12354?rev=1770559334&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12355?rev=1770558937&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12727?rev=1643782703&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12728?rev=1643782824&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12738?rev=1623771804&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12784?rev=1636131793&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12833?rev=1620230541&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12837?rev=1657245453&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12843?rev=1647426712&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12844?rev=1622042744&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12865?rev=1693485594&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12893?rev=1668220808&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12895?rev=1619795611&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12896?rev=1761893112&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12925?rev=1643782349&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12934?rev=1643780348&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12941?rev=1688660187&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/12986?rev=1620315054&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13018?rev=1743689860&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13022?rev=1642606637&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13034?rev=1654610449&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13038?rev=1690647644&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13092?rev=1615807335&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13144?rev=1638930127&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13163?rev=1648190117&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13164?rev=1643386057&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13171?rev=1628771039&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13172?rev=1628769906&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13214?rev=1763040859&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13258?rev=1689432648&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13260?rev=1615214311&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13265?rev=1774518636&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13275?rev=1625413498&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13277?rev=1613275250&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13294?rev=1637254510&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13300?rev=1640262540&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13303?rev=1665647712&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13305?rev=1707363466&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13306?rev=1634188613&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13309?rev=1621868044&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13317?rev=1632411387&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13398?rev=1671349119&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13409?rev=1634485829&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13414?rev=1642871596&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13421?rev=1730129307&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13444?rev=1648195306&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13537?rev=1619775468&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13544?rev=1620053723&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13547?rev=1620124974&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13549?rev=1663865458&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13557?rev=1619795849&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13575?rev=1613885940&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13576?rev=1671247410&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13713?rev=1671179323&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13716?rev=1692932916&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13899?rev=1691117671&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13904?rev=1649863247&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13925?rev=1619795597&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13974?rev=1615285056&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13975?rev=1615286317&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13976?rev=1627747889&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/13977?rev=1612113540&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14002?rev=1640261127&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14003?rev=1706867250&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14241?rev=1772636690&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14245?rev=1620229797&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14267?rev=1619801245&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14268?rev=1619789756&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14284?rev=1708651478&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14287?rev=1619799607&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14288?rev=1619794775&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14390?rev=1648190387&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14425?rev=1609165352&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14427?rev=1621000175&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14428?rev=1619795816&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14437?rev=1775731862&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14438?rev=1619795824&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14444?rev=1625412746&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14446?rev=1621329116&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14500?rev=1637254122&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14501?rev=1644077645&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14503?rev=1663086094&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14572?rev=1631891639&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14578?rev=1774533100&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14614?rev=1620230579&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14636?rev=1676450061&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14728?rev=1693486155&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14778?rev=1690509230&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14854?rev=1613484883&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14897?rev=1620109762&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14908?rev=1684991543&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14921?rev=1631888313&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14929?rev=1644162352&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14939?rev=1642867705&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/14959?rev=1671204123&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15015?rev=1768229246&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15106?rev=1623335986&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15134?rev=1774922838&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15311?rev=1744014463&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15337?rev=1673368273&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15440?rev=1770466394&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15459?rev=1656776863&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15460?rev=1690214276&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15485?rev=1690117462&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15486?rev=1644077808&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15553?rev=1740840396&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15560?rev=1619795782&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15561?rev=1619795774&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15596?rev=1636960948&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15600?rev=1687275086&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15645?rev=1639231870&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15648?rev=1658856169&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15678?rev=1656774820&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15686?rev=1633708301&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15688?rev=1630398214&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15717?rev=1627746637&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15718?rev=1652334751&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15748?rev=1649866346&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15782?rev=1620231255&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15783?rev=1668654816&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15829?rev=1634135900&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15880?rev=1668144956&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15897?rev=1623252769&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15898?rev=1740297838&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15899?rev=1621267277&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/15979?rev=1654156880&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16139?rev=1668736606&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16142?rev=1689172182&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16153?rev=1632231263&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16163?rev=1626014928&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16171?rev=1743688988&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16172?rev=1743688776&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16187?rev=1671199671&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16208?rev=1772637238&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16219?rev=1770560085&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16221?rev=1618403524&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16229?rev=1671178553&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16288?rev=1769043464&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16314?rev=1678675234&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16367?rev=1667835758&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16398?rev=1635050764&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16401?rev=1649861405&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16404?rev=1619789782&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16440?rev=1733026760&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16443?rev=1689176525&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16465?rev=1692606916&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16496?rev=1622558444&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16507?rev=1654010786&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16544?rev=1702217910&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16563?rev=1708657448&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16565?rev=1634741477&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16583?rev=1677482358&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16705?rev=1688481386&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16713?rev=1654010828&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16724?rev=1637255179&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16725?rev=1775731792&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16831?rev=1688569982&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16877?rev=1654705778&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16878?rev=1657178157&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16879?rev=1656942095&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16880?rev=1656943332&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16882?rev=1687017064&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16895?rev=1657680470&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16956?rev=1663829645&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16975?rev=1673943032&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16978?rev=1617118470&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/16993?rev=1619795766&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17069?rev=1634476306&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17070?rev=1634476133&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17080?rev=1686892953&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17098?rev=1705933987&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17103?rev=1613304319&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17104?rev=1617200143&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17114?rev=1627021359&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17131?rev=1620232600&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17134?rev=1620232418&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17143?rev=1636983656&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17144?rev=1641045947&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17203?rev=1654009469&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17236?rev=1740409844&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17275?rev=1757600326&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17298?rev=1639230733&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17353?rev=1617123930&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17398?rev=1656089752&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17407?rev=1619795743&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17417?rev=1623312876&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17429?rev=1622215744&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17472?rev=1635085042&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17478?rev=1641045439&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17526?rev=1674704171&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17546?rev=1771031863&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17626?rev=1679323142&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17633?rev=1679324089&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17646?rev=1679325207&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17831?rev=1636125972&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17896?rev=1741359176&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17975?rev=1619795712&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/17978?rev=1682424794&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18110?rev=1685945435&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18111?rev=1634479383&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18171?rev=1626016022&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18174?rev=1689342456&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18185?rev=1642518091&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18186?rev=1642518467&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18227?rev=1619800725&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18282?rev=1680621178&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18291?rev=1676276179&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18298?rev=1681309693&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18310?rev=1732519794&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18353?rev=1646051888&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18407?rev=1619795528&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18436?rev=1619798891&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18437?rev=1620121218&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18540?rev=1688816580&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18580?rev=1689437547&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18719?rev=1612689801&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18917?rev=1648014680&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18929?rev=1680620013&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18937?rev=1654619071&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/18978?rev=1773912467&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19086?rev=1768833408&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19102?rev=1692547821&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19133?rev=1729067912&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19238?rev=1608271485&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19406?rev=1702356304&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19535?rev=1764683000&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19539?rev=1643248220&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19568?rev=1744015411&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19577?rev=1675840276&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19584?rev=1692715782&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19598?rev=1642866236&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19651?rev=1619795698&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19700?rev=1765959053&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19737?rev=1689956449&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/19939?rev=1645171009&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20040?rev=1634483554&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20127?rev=1693212524&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20149?rev=1670490476&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20181?rev=1646055316&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20296?rev=1775732853&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20309?rev=1763014656&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20366?rev=1652445756&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20390?rev=1635054377&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20443?rev=1774517343&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20501?rev=1758872086&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20528?rev=1609515762&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/20903?rev=1771942351&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/21133?rev=1638289525&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/21739?rev=1700469984&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/21756?rev=1644732172&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/21757?rev=1644730606&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22151?rev=1687879072&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22236?rev=1700490616&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22341?rev=1645175377&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22342?rev=1645205076&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22343?rev=1645720516&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22857?rev=1638933454&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22862?rev=1638931895&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/22967?rev=1743691665&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23035?rev=1768228276&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23040?rev=1634742267&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23066?rev=1689951162&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23116?rev=1692713894&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23318?rev=1665163298&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23327?rev=1690215722&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23331?rev=1665162855&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23357?rev=1647621929&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23361?rev=1647623671&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23362?rev=1769323826&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23540?rev=1740315906&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23633?rev=1688490308&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23736?rev=1689562331&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/23818?rev=1668182386&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24060?rev=1663605585&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24268?rev=1642257817&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24320?rev=1693460202&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24498?rev=1646056969&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24499?rev=1668739890&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24505?rev=1691113076&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24507?rev=1668497543&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24528?rev=1774182199&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24533?rev=1772635923&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24553?rev=1711550927&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24678?rev=1686895624&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24680?rev=1647621194&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24838?rev=1690876204&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/24921?rev=1762136624&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25179?rev=1690029189&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25193?rev=1669431502&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25194?rev=1669047514&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25195?rev=1669434122&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25196?rev=1669476910&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25197?rev=1669477502&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25280?rev=1690875175&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25314?rev=1661180358&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25315?rev=1661181589&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25501?rev=1663605605&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25556?rev=1769069555&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25569?rev=1769613639&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25577?rev=1763019645&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25619?rev=1669431357&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25682?rev=1668736667&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25821?rev=1680250980&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25823?rev=1769609027&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/25974?rev=1675960269&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/26166?rev=1734440705&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/26973?rev=1687528266&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27117?rev=1690902392&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27123?rev=1681710779&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27296?rev=1687326174&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27347?rev=1769066115&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27852?rev=1706880435&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/27871?rev=1686896826&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28031?rev=1690216527&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28063?rev=1685199992&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28064?rev=1685200828&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28065?rev=1685376100&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28067?rev=1685205031&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28070?rev=1685412031&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28132?rev=1739869844&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28155?rev=1690116884&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28277?rev=1703078666&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28474?rev=1707924408&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/28754?rev=1713279744&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/29042?rev=1758696231&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/29457?rev=1706878660&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/30108?rev=1729151935&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/30359?rev=1773651037&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/30477?rev=1702301757&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/30855?rev=1701266788&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/30984?rev=1702998423&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31027?rev=1755752988&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31029?rev=1706238381&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31215?rev=1704701165&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31216?rev=1704702286&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31217?rev=1704716309&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31218?rev=1704717606&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31219?rev=1704720477&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31220?rev=1704724979&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31222?rev=1704726030&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31246?rev=1705308243&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31247?rev=1705308231&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31248?rev=1705310287&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31249?rev=1705328370&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31250?rev=1705459985&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31263?rev=1706245842&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31264?rev=1706246040&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31265?rev=1706246380&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31287?rev=1707967406&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31288?rev=1707985283&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31289?rev=1707986911&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31395?rev=1707142728&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31396?rev=1707144320&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31403?rev=1707141870&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31408?rev=1709651044&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31409?rev=1709651055&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31410?rev=1709651066&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31411?rev=1709650977&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31412?rev=1709650933&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31413?rev=1709651094&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31414?rev=1709651028&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31415?rev=1709651191&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31443?rev=1709652958&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31444?rev=1709652997&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31501?rev=1768665653&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31503?rev=1768665602&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31648?rev=1711551141&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/31687?rev=1711552224&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32374?rev=1740816076&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32381?rev=1729053842&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32382?rev=1729052207&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32462?rev=1741790319&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32525?rev=1730184443&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32594?rev=1730704813&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32683?rev=1768664217&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32744?rev=1759579981&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32755?rev=1761120555&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32863?rev=1741270879&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32871?rev=1737210764&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32873?rev=1769044705&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32908?rev=1738140527&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32914?rev=1774588499&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/32925?rev=1771054110&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33229?rev=1769046428&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33274?rev=1773237514&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33392?rev=1755753255&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33416?rev=1759577871&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33532?rev=1774968002&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33550?rev=1740845392&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33837?rev=1747321573&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33909?rev=1748008710&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33910?rev=1748008864&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33911?rev=1748010570&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33912?rev=1748011177&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33913?rev=1748856553&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33914?rev=1749107170&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33915?rev=1749107153&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/33995?rev=1770466523&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34019?rev=1772637912&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34036?rev=1751554030&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34078?rev=1763038353&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34124?rev=1755759289&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34130?rev=1755758692&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34728?rev=1763018925&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34764?rev=1764596348&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34769?rev=1766890391&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34826?rev=1769694036&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/34982?rev=1767104891&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/35127?rev=1768635100&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/35286?rev=1771939907&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EA%B3%B0%EA%B3%B0%EC%BB%B5?rev=1669434246&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EB%8B%A8%EA%B3%84%EB%B3%84?rev=1668736436&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EB%9D%BC%EC%9D%B4_%EB%B8%94%EB%A1%9C%EA%B7%B8_%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1668736710&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1774533459&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EB%B8%94%EB%A1%AD%EC%BB%B5?rev=1668436888&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EC%8B%A4%ED%96%89%EC%8B%9C%EA%B0%84?rev=1665165410&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EC%9B%94%EA%B0%84_%ED%96%A5%EC%9C%A0%ED%9A%8C_2024._01?rev=1707963703&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%EB%B3%B4%EB%9D%BC%EB%A7%A4%EC%BB%B5_%EC%98%88%EC%84%A0?rev=1706245580&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%ED%9D%90%EC%A6%88%EB%A1%9C%EC%BB%B5?rev=1704702525&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/boj_%EC%A2%85%EB%A3%8C?rev=1776349099&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/python%EC%9C%BC%EB%A1%9C_tle%EA%B0%80_%EB%82%98%EB%8A%94_%EB%AC%B8%EC%A0%9C?rev=1682423931&amp;do=diff"/>
                <rdf:li rdf:resource="https://teferi.net/ps/problems/boj/start?rev=1776348972&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://teferi.net/_media/wiki/dokuwiki.svg">
        <title>테페리넷</title>
        <link>https://teferi.net/</link>
        <url>https://teferi.net/_media/wiki/dokuwiki.svg</url>
    </image>
    <item rdf:about="https://teferi.net/ps/problems/boj/1002?rev=1632875348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-29T00:29:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>터렛</title>
        <link>https://teferi.net/ps/problems/boj/1002?rev=1632875348&amp;do=diff</link>
        <description>터렛

풀이

	*  각 터렛을 기준으로 마린이 있을수 있는 좌표의 범위를 그려보면, 반지름이 r인 원으로 나타난다. 두개의 원의 교점의 갯수를 구하면 된다.
	*  중점간의 거리와 두 반지름의 합 또는 차에 따라서, 두 원은 두 점에서 만나거나, 접하거나 (내접 or 외접), 접하지 않거나 (멀리 떨어져 있거나 한 원이 다른 원 안에 포함되거나), 일치하거나 할 수 있다. 각각의 조건은 그냥 그림을 그려보면 쉽게 파악 가능하고, 거기에 맞춰서 조건 분기를 하는 코드를 짜면 끝.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1004?rev=1645720937&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-24T16:42:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>어린 왕자</title>
        <link>https://teferi.net/ps/problems/boj/1004?rev=1645720937&amp;do=diff</link>
        <description>어린 왕자

풀이

	*  발상에 걸린 시간: 매우 짧음 / 구현에 걸린 시간: 매우 짧음
	*  출발점과 도착점이 둘다 원 안에 있거나, 원 밖에 있으면 원을 지나갈 필요가 없다.
	*  따라서, 주어진 원들 중에서 출발점과 도착점중 한개만 원의 내부에 있는 원의 갯수를 세기만 하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1009?rev=1642064334&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-13T08:58:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>분산처리</title>
        <link>https://teferi.net/ps/problems/boj/1009?rev=1642064334&amp;do=diff</link>
        <description>분산처리

풀이

	*  a^b 를 10으로 나눈 나머지를 구하면 된다.
	*  그냥 a를 곱하고 10으로 나누는 것을 b번 반복하면 O(b)이지만, 거듭제곱의 빠른 계산 (Exponentiation by squaring)을 이용하면 O(logb)에 계산 가능하다.
	*  그리고, a, a^2, a^3, ...을 10으로 나눈 나머지는 주기를 갖고 반복되기 때문에, 주기를 구한 뒤에 그것을 이용해서 풀면 O(1)에도 풀수 있다. (구현은 안해봄)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1010?rev=1629644826&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-22T15:07:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>다리 놓기</title>
        <link>https://teferi.net/ps/problems/boj/1010?rev=1629644826&amp;do=diff</link>
        <description>다리 놓기

풀이

	*  기초적인 조합론으로 답이 C(M,N)이 되는것을 쉽게 알수 있다. 이항계수 C(x,y)는 math.comb를 쓰면 된다
	*  워낙 간단한 문제라서 숏코딩도 한번 건드려봤다. 기존의 파이썬 최고 기록인 78b를 4byte 더 줄여서 최고기록을 74b로 갱신했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1013?rev=1741355591&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T13:53:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Contact</title>
        <link>https://teferi.net/ps/problems/boj/1013?rev=1741355591&amp;do=diff</link>
        <description>Contact

풀이

	*  문제에 정규 표현식 패턴이 이미 다 주어져있다. 문제 의도는 수동으로 매칭 여부를 판단하는 코드를 작성하라는 것이 아니었을까 싶긴 한데, 정규 표현식 라이브러리를 사용해서 매칭 여부를 확인하면 그냥 끝난다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1018?rev=1668652767&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-17T02:39:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>체스판 다시 칠하기</title>
        <link>https://teferi.net/ps/problems/boj/1018?rev=1668652767&amp;do=diff</link>
        <description>체스판 다시 칠하기

풀이

	*  N,M의 범위가 작고 자를 크기가 고정되어 있으므로, 그냥 모든 8*8 영역에 대해서 다시칠할 갯수를 구해보는 브루트포스 방식으로도 푸는데에는 지장이 없다. 영역 한개에 대해서 계산하는 것은 O(8*8)=O(1) 이고, 영역은 O(N*M)개가 있으므로 총 시간복잡도는 O(NM).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1021?rev=1651560306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T06:45:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회전하는 큐</title>
        <link>https://teferi.net/ps/problems/boj/1021?rev=1651560306&amp;do=diff</link>
        <description>회전하는 큐

풀이

	*  현재 원소를 뽑은 다음, 다음 원소를 뽑기 위해서 다음 원소를 맨 앞으로 옮길때, 2번 연산을 이용하는 방법과 3번 연산을 이용하는 방법중 더 짧은 방법을 고르면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1025?rev=1645721588&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-24T16:53:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제곱수 찾기</title>
        <link>https://teferi.net/ps/problems/boj/1025?rev=1645721588&amp;do=diff</link>
        <description>제곱수 찾기

풀이

	*  발상에 걸린 시간: 매우 짧음 / 구현에 걸린 시간: 매우 짧음
	*  N의 범위가 작으므로, 그냥 조건을 만족하는 정수들을 일일히 다 찾아서 제곱수인지 확인하는 방법으로 하면 풀린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1033?rev=1729837972&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-25T06:32:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>칵테일</title>
        <link>https://teferi.net/ps/problems/boj/1033?rev=1729837972&amp;do=diff</link>
        <description>칵테일

풀이

	*  사실 n이 워낙 작아서 어떤 방식으로 풀든 시간안에 풀리기는 한다
	*  칵테일의 재료를 노드로, 비율이 주어진 재료쌍을 엣지로 하는 그래프를 생각하자.
	*  문제가 약간 애매하게 쓰여있는데,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1036?rev=1622738216&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-03T16:36:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>36진법</title>
        <link>https://teferi.net/ps/problems/boj/1036?rev=1622738216&amp;do=diff</link>
        <description>36진법

풀이

	*  모든 숫자들을 10진수로 변환한다. 그 과정에서 36개의 digit들에 대해서, 각각을 Z로 바꿨을때 전체 합이 얼마나 증가하는지를 추가로 계산한다.
	*  숫자들의 합을 구하고, 구해놓은 증가량중 가장 큰 K개를 추가로 더해준다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1037?rev=1654012370&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T15:52:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>약수</title>
        <link>https://teferi.net/ps/problems/boj/1037?rev=1654012370&amp;do=diff</link>
        <description>약수

풀이

	*  x가 N의 약수이면 N/x도 약수이다. x가 가장 작은 약수이면 N/x는 가장 큰 약수이다. 가장 작은 약수와 가장 큰 약수를 곱하면 x * (N/x) = N 이 된다. 끝.
	*  약수 목록에서 최솟값과 최댓값을 찾아서 곱하기만 하면 되므로 시간복잡도는 O(n)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1065?rev=1636960708&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T07:18:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>한수</title>
        <link>https://teferi.net/ps/problems/boj/1065?rev=1636960708&amp;do=diff</link>
        <description>한수

풀이

	*  한수라는 용어는 처음 들어봤는데, 원래 있는 말인지 이 문제에서 지어낸 말인지조차도 모르겠다
	*  숫자가 2개면 항상 등차수열이므로, 2자리수 숫자는 무조건 한수이다. 자릿수가 더 커지면 등차수열인지 일일히 체크를 해야 하는데, N이 1000 이하다 보니, 1000은 한수가 아니니 제외하면.. 등차수열 체크를 해야하는 것은 3자리수 숫자들 뿐이다. 그냥 숫자 abc에 대해서 a+c==2*b인지만 보면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1067?rev=1620232387&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:33:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이동</title>
        <link>https://teferi.net/ps/problems/boj/1067?rev=1620232387&amp;do=diff</link>
        <description>이동

풀이

	*  고속 푸리에 변환 (Fast Fourier Transform, FFT)을 써서 합성곱을 구하는 전형적인 문제.
	*  수열 한개를 두번 이어 붙인 후, FFT로 다항식 곱셈을 해서 얻어지는 수열의, N-1부터의 N개 항이 우리가 원하는 합성곱이다.
		*  수열을 바꾸지 않고 그냥 다항식 곱셈을 해서 수열을 얻고, i번째 항과 N+i번째 항을 더하는 방식으로 합성곱 수열을 계산할 수도 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1069?rev=1645116182&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-17T16:43:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>집으로</title>
        <link>https://teferi.net/ps/problems/boj/1069?rev=1645116182&amp;do=diff</link>
        <description>집으로

풀이

	*  문제가 좀 헷갈리게 적혀있다. 걷는거는 그냥 초속 1로 이동한다는 뜻이고, 점프는 한번 뛰면 무조건 T초를 채워서 D만큼의 거리를 이동한다는 뜻이다.
	*  먼저 엣지 케이스를 정리하자. 점프했을때 T&gt;=D 라면 그냥 걷는것보다 느리다. 점프를 할 이유가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1135?rev=1636132908&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-05T17:21:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>뉴스 전하기</title>
        <link>https://teferi.net/ps/problems/boj/1135?rev=1636132908&amp;do=diff</link>
        <description>뉴스 전하기

풀이

	*  트리 DP문제.
	*  어떤 노드에서 차일드들에게 뉴스를 전달할때, 전달시간이 오래걸리는 서브트리에 먼저 전달하는 것이 가장 효율적인 방법이다.
	*  서브트리에 대한 DP값을, 서브트리의 루트에서 모든 노드로 뉴스를 전달하는 최소 시간으로 정의한다면, DP[0] &gt; DP[1] &gt; DP[2] &gt; .. 으로 정렬되어있을때 DP[root] = max(i + DP[i])가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1153?rev=1658565472&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-23T08:37:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>네 개의 소수</title>
        <link>https://teferi.net/ps/problems/boj/1153?rev=1658565472&amp;do=diff</link>
        <description>네 개의 소수

풀이

	*  보통 네개의 수의 합을 갖고 푸는 문제들 (예를 들면 수집합) 에서 주로 쓰이는 테크닉은 두 수의 합으로 만들어질수 있는 숫자들을 모두 구해놓고, 그것을 이용해서 다시 네 수의 합에 대해서 조사하는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1157?rev=1636981831&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T13:10:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>단어 공부</title>
        <link>https://teferi.net/ps/problems/boj/1157?rev=1636981831&amp;do=diff</link>
        <description>단어 공부

풀이

	*  그냥 시키는대로 구현해서 최빈값을 찾으면 된다.
	*  파이썬의 경우 statistics.multimode 를 사용하면 바로 구할수 있다. (직접 구현하는 것에 비해서 속도는 살짝 느린것 같기는 하다)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1158?rev=1651561646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T07:07:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>요세푸스 문제</title>
        <link>https://teferi.net/ps/problems/boj/1158?rev=1651561646&amp;do=diff</link>
        <description>요세푸스 문제

풀이

	*  요세푸스 순열을 출력하는 문제
	*  1~n까지의 수를 실제로 생성해서 k번째 수들을 하나씩 지워가면서 출력한다. Order Statistic Tree를 사용하면 지워야 할 수를 찾아서 지우는 것을 O(logn)에 처리할 수 있다. 총 시간복잡도는 O(nlogn)이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1167?rev=1610896466&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-17T15:14:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리의 지름</title>
        <link>https://teferi.net/ps/problems/boj/1167?rev=1610896466&amp;do=diff</link>
        <description>트리의 지름

	*  트리의 지름 (1967번) 문제와 이름이 똑같다. 그리고 구해야 하는 것도 똑같다. 다만 이 문제는 그냥 트리, 1967번은 rooted tree라는 점만 다르다.

풀이

	*  트리의 지름 참고. 

코드



	*  Dependency: teflib.tgraph.min_distances_on_tree

boj ps:problems:boj:골드_3 ps:teflib:min_distances_on_tree</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1168?rev=1628350205&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-07T15:30:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>요세푸스 문제 2</title>
        <link>https://teferi.net/ps/problems/boj/1168?rev=1628350205&amp;do=diff</link>
        <description>요세푸스 문제 2

풀이

	*  요세푸스 문제 에서 n의 크기 제한을 늘린 문제. 요세푸스 문제은 O(n^2) 솔루션으로도 통과 가능했지만, 이 문제는 O(nlogn) 으로 풀어야 한다. 풀이는 요세푸스 문제 참고.
	*  하지만 이 문제는 n의 크기제한이 늘어난 것 외에도, 제한시간이 언어별로 따로 정해져있고, python기준으로 상당히 타이트하다. python과 pypy이 동일하게 750ms의 제한시간을 갖고 있는데,…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1179?rev=1628260043&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-06T14:27:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>마지막 요세푸스 문제</title>
        <link>https://teferi.net/ps/problems/boj/1179?rev=1628260043&amp;do=diff</link>
        <description>마지막 요세푸스 문제

풀이

	*  마지막으로 남는 번호를 구하는 요세푸스 문제
	*  요세푸스 문제에서 설명한대로 O(n) 알고리즘과 O(klogn)알고리즘이 존재한다. 여기에서는 n값에 비해서 k값이 매우 작으므로 O(klogn)알고리즘을 사용하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1182?rev=1637070251&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-16T13:44:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>부분수열의 합</title>
        <link>https://teferi.net/ps/problems/boj/1182?rev=1637070251&amp;do=diff</link>
        <description>부분수열의 합

풀이

	*  Subset sum problem 이라는 유명한 문제로, NP-complete 임이 잘 알려져있는 문제다. 
	*  그래서 다항시간 알고리즘이 존재하지 않는다. exponential time에 풀려면 그냥 무식하게 모든 부분수열의 합을 다 구해보고, 그중에서 S의 갯수를 찾으면 부분수열의 갯수인 O(2^n)에 찾을 수 있다. n이 20밖에 안되므로, 이렇게 풀어도 통과하는데에는 문제가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1197?rev=1635085151&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-24T14:19:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최소 스패닝 트리</title>
        <link>https://teferi.net/ps/problems/boj/1197?rev=1635085151&amp;do=diff</link>
        <description>최소 스패닝 트리

풀이

	*  문제 제목 그대로 최소 신장 트리 (Minimum Spanning Tree / MST)를 구하기만 하면 되는 문제.
	*  그래프에 음수 가중치가 있지만 따로 신경쓸 필요는 없다. Prim 알고리즘과 Kruskal 알고리즘 모두 음수 가중치의 존재여부에 관계 없이 정상적으로 동작한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1208?rev=1632919090&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-29T12:38:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>부분수열의 합 2</title>
        <link>https://teferi.net/ps/problems/boj/1208?rev=1632919090&amp;do=diff</link>
        <description>부분수열의 합 2

풀이

	*  부분수열의 합에서 n의 범위를 늘린 문제
	*  부분수열의 합는 O(2^n) 알고리즘으로도 풀 수 있었지만, 이 문제는 반드시 meet in the middle 테크닉을 써서 O(2^(n/2))으로 풀어야만 한다. 풀이는 부분수열의 합 참조

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1214?rev=1741655710&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-11T01:15:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>쿨한 물건 구매</title>
        <link>https://teferi.net/ps/problems/boj/1214?rev=1741655710&amp;do=diff</link>
        <description>쿨한 물건 구매

풀이

	*  P원 지폐를 x개 사용했을때 만들 수 있는 최소 금액을 각각 구한다음에 그중에서 최솟값을 찾으면 된다.
	*  탐색해야 하는 x의 범위를 줄이는 것이 핵심이다.
		*  x가 Q보다 클 경우는 확인할 필요가 없다. P원 지폐를 Q개 쓴것은 Q원 지폐를 P개 써서 만들수 있기 때문에, P를 (Q+a)개 사용해서 만들수 있는 값은 P를 a개 사용해서 똑같이 만들 수 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1219?rev=1632409793&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T15:09:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>오민식의 고민</title>
        <link>https://teferi.net/ps/problems/boj/1219?rev=1632409793&amp;do=diff</link>
        <description>오민식의 고민

풀이

	*  Job Hunt와 같은 방식으로, 버는 돈을 -로 쓰는 돈을 +로 해서 그래프를 만들면, 음수 가중치가 존재하는 그래프에서의 단일 출발지 최단 경로 (Single Source Shortest Path) 문제가 된다.
	*  따라서 SPFA 알고리즘을 돌리고, 얻은 최단경로에 -를 붙여주면 끝. 다만</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1238?rev=1663691904&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-20T16:38:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파티</title>
        <link>https://teferi.net/ps/problems/boj/1238?rev=1663691904&amp;do=diff</link>
        <description>파티

풀이

	*  X에서 각 마을까지 가는 최단 거리와, 각 마을에서 X까지 가는 최단거리를 알면 두개의 합이 가장 큰 마을을 찾는것은 쉽게 할수 있다. 
	*  X에서 각 마을까지 가는 최단 거리는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1261?rev=1663831527&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T07:25:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알고스팟</title>
        <link>https://teferi.net/ps/problems/boj/1261?rev=1663831527&amp;do=diff</link>
        <description>알고스팟

풀이

	*  벽을 부수면서 이동할때의 비용을 1, 벽을 안부수면서 이동할때의 비용을 0이라고 생각하면, 그냥 그리드상에서 최단 경로를 구하는 문제가 된다. 녹색 옷 입은 애가 젤다지?를 비롯해서 흔히 접할수 있는 유형이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1275?rev=1657247456&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:30:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>커피숍2</title>
        <link>https://teferi.net/ps/problems/boj/1275?rev=1657247456&amp;do=diff</link>
        <description>커피숍2

풀이

	*  구간합과 포인트 업데이트를 번갈아서 처리해주면 되는 기본적인 구간합 쿼리 문제.
	*  Fenwick tree를 이용하면 초기화에 O(n), 각 쿼리 하나 처리에 O(logn)이 걸린다. 총 시간복잡도는 O(n+mlogn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1280?rev=1657247425&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:30:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나무 심기</title>
        <link>https://teferi.net/ps/problems/boj/1280?rev=1657247425&amp;do=diff</link>
        <description>나무 심기

풀이

	*  x번째 나무를 심는 비용은. i=0...x-1에 대해서 sum(|p[x] - p[i]|) 이다. x번째 나무보다 왼쪽에 있는 나무들만 따로 모아서 p_l이라 하면 이것들의 비용은 p[x]*len(p_l) - sum(p_l) 이고, 오른쪽에 있는 나무들에 대한 비용은 sum(p_r) - p[x]*len(p_r)이다. 둘을 합하면 p[x]*len(p_l) - sum(p_l) + sum(p_r) - p[x]*len(p_r) 이고, 바꿔쓰면 sum(p)-2*sum(p_l) + p[x]-(i-2*len(p_l)) 이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1300?rev=1626708833&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T15:33:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>K번째 수</title>
        <link>https://teferi.net/ps/problems/boj/1300?rev=1626708833&amp;do=diff</link>
        <description>K번째 수

풀이

	*  N개의 수가 주어졌을때, X보다 작은 수의 갯수를 세는 것이 O(T)에 가능하다면, K번째 수는 파라메트릭 서치를 이용해서 O(TlogN)에 찾을 수 있다. K번째 수는 'a_1, ..., a_N 중에서, a_i보다 작은 수의 갯수가 K-1개 이상인 가장 작은 a_i' 로 표현할 수 있기 때문이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1305?rev=1671181853&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T09:10:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>광고</title>
        <link>https://teferi.net/ps/problems/boj/1305?rev=1671181853&amp;do=diff</link>
        <description>광고

풀이

	*  문자열의 가장 짧은 반복 패턴을 찾으면 되는 문제이다. S= S[:l]*n+S[:m] 으로 표현할때의 가장 짧은 l.
	*  전광판이 어쩌고하는 복잡해보이는 설정은, 문자열이 완전히 반복된 형태가 아니라도 된다는, 즉 위의 표현에서 m이 0이 아니라도 된다는 의미이다.. 결국 풀이를 더 쉽게 해주기 위해서 추가된 제한이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1316?rev=1637251624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-18T16:07:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>그룹 단어 체커</title>
        <link>https://teferi.net/ps/problems/boj/1316?rev=1637251624&amp;do=diff</link>
        <description>그룹 단어 체커

풀이

	*  그냥 시키는 대로 구현하면 되는 문제.
	*  그룹핑을 하는 것을 그냥 인접한 글자들을 비교하면서 처리하더라도 쉽게 처리되지만, itertools.groupby를 쓰면 더 간단하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1321?rev=1622218538&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-28T16:15:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>군인</title>
        <link>https://teferi.net/ps/problems/boj/1321?rev=1622218538&amp;do=diff</link>
        <description>군인

풀이

	*  문제 설명이 좀 이해하기 어렵게 되어있는데, 이해하고 나면 간단한 k번째수 쿼리 문제가 된다.
	*  군인들의 부대 번호를 집합에 저장한다고 생각하자. 1번 부대에 4명, 2번 부대에 3명, 3번 부대에 2명이면 {1,1,1,1,2,2,2,3,3} 이런식.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1323?rev=1770342700&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-06T01:51:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자 연결하기</title>
        <link>https://teferi.net/ps/problems/boj/1323?rev=1770342700&amp;do=diff</link>
        <description>숫자 연결하기

풀이

	*  우선 기본적인 것부터.. N가 a자리 수라고 하면, 어떤 수 x 뒤에 N를 한번 더 이어붙인 수는 x*(pow(10,a))+N가 된다.
	*  그래서 N을 i번 이어붙인 수를 K로 나눈 나머지가 r 이라면, N을 (i+1)번 이어붙인 수를 K로 나눈 나머지는 (r*(pow(10,a))+N) % K 가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1351?rev=1657003825&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T06:50:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>무한 수열</title>
        <link>https://teferi.net/ps/problems/boj/1351?rev=1657003825&amp;do=diff</link>
        <description>무한 수열

풀이

	*  점화식이 주어진 상태에서 구현만 하면 된다. 바텀업으로 바꿔서 처리하기는 복잡하고 비효율적이고, 그냥 저대로 재귀함수를 만들고 memoization을 추가해주면 된다.
	*  시간복잡도 계산은 좀 어려운데.. 대충 x=min(p,q)를 x라 하고 T(n)=2*T(n/x)+c 라고 하면.. 마스터정리를 적용해서 $ O(n^{log_x{2}}) $</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1365?rev=1657246417&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:13:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>꼬인 전깃줄</title>
        <link>https://teferi.net/ps/problems/boj/1365?rev=1657246417&amp;do=diff</link>
        <description>꼬인 전깃줄

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS) 문제이다. LIS만 남기고 나머지 전깃줄을 자르면 된다. 그렇게 하면 답은 전체 갯수에서 LIS의 길이를 뺀 것으로 구할수 있고, LIS의 길이는 이분탐색으로 O(nlogn)에 구할수 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1395?rev=1620134648&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T13:24:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스위치</title>
        <link>https://teferi.net/ps/problems/boj/1395?rev=1620134648&amp;do=diff</link>
        <description>스위치

풀이

	*  기본적인 구간 업데이트 / 구간 쿼리 문제. 
	*  Lazy propagation을 지원하는 세그먼트 트리를 이용해서 쉽게 풀수 있다. 
	*  기본적으로 구간합 쿼리이므로, 구간을 합칠때 필요한 함수는 add. 업데이트는 구간의 값을 {구간 크기 - 구간값}으로 바꾼다. 업데이트에 따로 파라메터가 필요하지는 않고, 두번 누적되면 업데이트가 취소된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1406?rev=1651561685&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T07:08:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>에디터</title>
        <link>https://teferi.net/ps/problems/boj/1406?rev=1651561685&amp;do=diff</link>
        <description>에디터

풀이

	*  키로거과 거의 동일한 문제.
	*  현재 위치에서의 삽입과 삭제, 그리고 현재 위치를 왼쪽이나 오른쪽으로 한칸씩 이동하는 연산이 필요하다. 
	*  이것들은 모두 링크드 리스트의 핵심 연산으로, 전부 O(1)에 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1412?rev=1771032130&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-14T01:22:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>일방통행</title>
        <link>https://teferi.net/ps/problems/boj/1412?rev=1771032130&amp;do=diff</link>
        <description>일방통행

풀이

	*  일방통행인 길들 사이에서 사이클이 생기지만 않는다면, 양방통행인 길에서는 언제나 사이클이 생기지 않는 방향으로 길을 제거할수 있다.
	*  결국 문제는 양방통행인 길들을 제외한 상태에서, 일방통행인 길들로만 이루어진 사이클이 있는지를 확인하는 것으로 해결 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1422?rev=1622558321&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-01T14:38:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자의 신</title>
        <link>https://teferi.net/ps/problems/boj/1422?rev=1622558321&amp;do=diff</link>
        <description>숫자의 신

풀이

	*  큰 수 만들기의 응용 문제이다.
	*  큰 수 만들기 에서의 핵심은, 숫자들을 늘어놓아서 가장 큰 수를 만들기 위해서는 숫자들을 문자열로 처리해서 정렬하되 비교함수를 x+y&lt;y+x 로 놓으면 된다는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1424?rev=1671362610&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-18T11:23:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>새 앨범</title>
        <link>https://teferi.net/ps/problems/boj/1424?rev=1671362610&amp;do=diff</link>
        <description>새 앨범

풀이

	*  단순하게 수식으로 나오긴 하는데, 꼼꼼하게 체크하지 않으면 실수할 여지가 좀 있다.
		*  다행인점은 주어진 테케가 타이트한 편이라서 실수 파악하기가 쉬운 편이긴 하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1427?rev=1629815257&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-24T14:27:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소트인사이드</title>
        <link>https://teferi.net/ps/problems/boj/1427?rev=1629815257&amp;do=diff</link>
        <description>소트인사이드

풀이

	*  그냥 기초 정렬 문제. 입력을 문자열로 받아서 소팅하고 출력하면 끝.

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1431?rev=1649500696&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-09T10:38:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>시리얼 번호</title>
        <link>https://teferi.net/ps/problems/boj/1431?rev=1649500696&amp;do=diff</link>
        <description>시리얼 번호

풀이

	*  그냥 시키는 대로 정렬하면 되는 문제.
	*  python에서 여러개의 기준으로 정렬할 경우에는, sort가 stable하다는 점을 이용해서 정렬을 여러번 하는 방법과, 키를 여러개의 기준에 대한 튜플로 만들어주는 방법이 모두 가능하다. 이 문제는 정렬을 여러번 하는 방식으로 풀었다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1439?rev=1642004301&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-12T16:18:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>뒤집기</title>
        <link>https://teferi.net/ps/problems/boj/1439?rev=1642004301&amp;do=diff</link>
        <description>뒤집기

풀이

	*  간단하게 생각하자. 같은 문자가 연속된 것을 그룹으로 묶자. 0으로 된 그룹의 갯수와 1로 된 그룹의 갯수를 비교해서 적은 쪽을 모두 뒤집으면 최적 횟수가 나온다. 
	*  0으로 된 그룹의 갯수와 1로 된 그룹의 갯수는 같거나 1차이가 나므로, 그냥 총 그룹의 갯수를 2로 나누고 내림해도 똑같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1449?rev=1649865449&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:57:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수리공 항승</title>
        <link>https://teferi.net/ps/problems/boj/1449?rev=1649865449&amp;do=diff</link>
        <description>수리공 항승

풀이

	*  기초적인 그리디 유형
	*  점들을 정렬한 뒤에, 가장 왼쪽점에서부터 순회한다. 가장 왼쪽점에 테이프의 왼쪽 끝을 붙이면, 그 점에서 거리가 L-1 이하인 점들은 모두 지금의 테이프로 커버할수 있으므로 추가 테이프가 필요 없다. 거리가 L-1 이상인 점을 만나면, 새로운 테이프의 왼쪽 끝을 붙이고 반복한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1456?rev=1649503233&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-09T11:20:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>거의 소수</title>
        <link>https://teferi.net/ps/problems/boj/1456?rev=1649503233&amp;do=diff</link>
        <description>거의 소수

풀이

	*  풀이 자체는 간단하다. 소수의 리스트 p_i를 구한다음, 각 p_i에 대해서 A ≤ p_i^x ≤ B 이고 x≥2인 x의 갯수를 구해서 모두 더하면 된다. 
	*  소수 목록은 최대 sqrt(B) 까지만 구하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1457?rev=1623297417&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-10T03:56:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정확해</title>
        <link>https://teferi.net/ps/problems/boj/1457?rev=1623297417&amp;do=diff</link>
        <description>정확해

풀이

	*  번역이 살짝 헷갈린다. 제대로 다시 정리하면, K&lt;M이고, K∣M 이고, K^N∤M 의 세 조건을 모두 만족하면 K는 M의 멋진 약수이다.
	*  f(X) = d(1) + d(2) + ... d(X)을 계산하면, 최종 답은 f(A+B) - f(A-1)로 구할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1476?rev=1652326206&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-12T03:30:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>날짜 계산</title>
        <link>https://teferi.net/ps/problems/boj/1476?rev=1652326206&amp;do=diff</link>
        <description>날짜 계산

풀이

	*  연립 합동식 {x%15=E, x%28=S, x%19=M} 의 해를 찾는 문제. 모듈러스가 모두 서로소이므로 중국인의 나머지 정리를 그냥 적용하면 된다.
		*  답은 1이상이어야 하므로, 해가 0인 경우에는 따로 처리해야 하는 것에 주의.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1492?rev=1675958690&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-09T16:04:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>합</title>
        <link>https://teferi.net/ps/problems/boj/1492?rev=1675958690&amp;do=diff</link>
        <description>합

풀이

	*  거듭제곱의 합을 계산하는 문제.
	*  풀이 방법은 거듭제곱의 합을 참고. n≤50으로 매우 작기 때문에, O(n^2) DP를 이용해도 순식간에 풀린다
	*  라그랑주 보간법을 이용한 코드는 거듭제곱의 합 1 참고.

코드



	*  Dependency: teflib.combinatorics.CombTable

boj ps:problems:boj:플래티넘_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1504?rev=1663576932&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-19T08:42:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>특정한 최단 경로</title>
        <link>https://teferi.net/ps/problems/boj/1504?rev=1663576932&amp;do=diff</link>
        <description>특정한 최단 경로

풀이

	*  S에서 E까지 가는 동안 x와 y를 거쳐야 한다. 그렇다면 S-&gt;x-&gt;y-&gt;E 로 가거나 S-&gt;y-&gt;x-&gt;E 로 가는 두가지중 하나이므로, 둘중에서 짧을쪽을 택하면된다.
	*  이를 계산하려면 S-x, x-y, y-E, S-y, x-E 사이의 거리를 알아야 하는데, 이는 다익스트라 알고리즘을 시작점을 x로 놓고 한번 돌리고, y로 놓고 한번 돌려서 총 2번 돌리면 얻을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1517?rev=1622040059&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-26T14:40:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>버블 소트</title>
        <link>https://teferi.net/ps/problems/boj/1517?rev=1622040059&amp;do=diff</link>
        <description>버블 소트

풀이

	*  말을 살짝 꼬아놨지만 결국은 Inversion의 갯수를 세는 문제
	*  Inversion Counting에서 설명했듯, 머지소트에 기반한 방식과 Order Statistic Tree에 기반한 방식으로 풀 수 있다.
	*  문제가 여기에서 조금 확장되면 머지소트을 사용하는 방법은 적용하기가 어렵거나 속도가 느리거나 하지만, 이 문제에서만은 머지소트 방법이 더 빠르게 동작했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1521?rev=1689434098&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-15T15:14:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>랜덤 소트</title>
        <link>https://teferi.net/ps/problems/boj/1521?rev=1689434098&amp;do=diff</link>
        <description>랜덤 소트

풀이

	*  효율적인 방법이 있을것 같은데 잘 안떠오르는 상황. 근데 문제를 잘 읽어보면 N이 최대 8이다. 아.. 효율적인 방법이 따로 없는게 맞구나. 그냥 8! 개의 모든 가능한 스테이트들의 기댓값을 DP로 구해버리면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1542?rev=1689176366&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-12T15:39:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>체스 연습</title>
        <link>https://teferi.net/ps/problems/boj/1542?rev=1689176366&amp;do=diff</link>
        <description>체스 연습

풀이

	*  Wythoff's game인데, 이 게임은 어떤 포지션에서의 승리/패배 여부는 공식으로 계산할수 있지만, 그런디수는 공식이 따로 없다.
	*  그래서 DP를 이용해서 그런디수를 계산하면 된다. 포지션의 갯수는 O(x*y)이고, 행동의 갯수는 O(x+y)개이므로, 총 시간복잡도 O(x*y*(x+y))에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1572?rev=1656481783&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-29T05:49:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>중앙값</title>
        <link>https://teferi.net/ps/problems/boj/1572?rev=1656481783&amp;do=diff</link>
        <description>중앙값

풀이

	*  중앙값 측정과 동일한 문제이다. 입출력 형식, 인풋값의 범위까지 모두 동일하니 풀이는 그쪽을 참고.
	*  다만, 테스트셋이 조금 더 타이트한것 같다. 처음에 실수로 버그가 있는 코드를 제출했었는데,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1603?rev=1687702637&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-25T14:17:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>작은 정사각형</title>
        <link>https://teferi.net/ps/problems/boj/1603?rev=1687702637&amp;do=diff</link>
        <description>작은 정사각형

풀이

	*  좀 막막했는데, 2×2 크기의 정사각형의 위의 절반은 반드시 홀수번째 줄에 색칠해야 한다는 것이 중요한 힌트였다.
	*  이 조건덕분에, 보드를 2줄씩 나눠서 게임을 진행해도 똑같은 게임이 된다. 즉, 2줄단위로 나눠서 각각에 대해서 그런디 수를 구하고, 이것들을 모두 xor해서 전체 게임판의 그런디수를 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1620?rev=1656988125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T02:28:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나는야 포켓몬 마스터 이다솜</title>
        <link>https://teferi.net/ps/problems/boj/1620?rev=1656988125&amp;do=diff</link>
        <description>나는야 포켓몬 마스터 이다솜

풀이

	*  이름으로부터 번호를 매핑하는 dict를 만들어서 처리하면 된다. 총 시간복잡도는 O(n+m)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1624?rev=1643173319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-26T05:01:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>데크 소트</title>
        <link>https://teferi.net/ps/problems/boj/1624?rev=1643173319&amp;do=diff</link>
        <description>데크 소트

풀이

	*  데크 소트 2의 하드 버전. n의 범위가 커진것은 별 문제가 아닌데, 중복 숫자가 들어올수 있다는 것 때문에 전혀 다른 방법으로 풀어야 한다.
	*  중복 숫자가 없을 경우에는, 현재 만들어진 덱의 끝에 있는 숫자와 인접한 순위의 숫자가 나오면 무조건 덱에 추가해도 소팅이 가능했다. 하지만 중복 숫자가 있는 경우에는 이야기가 달라지는데, 입력 시퀀스가 5,4,5,6,5 이라고 할 경우, 처음 5를 갖고 새 덱을 만든 다음에 4가 들어왔을 경우, 뒤에 5가 아직 2개 더 나올 예정이지만 4를 앞에다가 붙일 수 있다. 뒤에 나오는 5는 덱의 뒤쪽에 붙이면 되기 때문이다. 하지만 그 뒤에 6이 들어왔을 경우에는 붙일수 없다. 양쪽이 다 막히면 그 뒤에 나오는 5를 넣을수가 없기 때문이다. 결국, 순위가 인접한 숫자라도 상황에 따라서 덱에 붙일수 있는 경우가 있고 새 덱을 만들어야 하는 경우가 생긴다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1629?rev=1627488614&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-28T16:10:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>곱셈</title>
        <link>https://teferi.net/ps/problems/boj/1629?rev=1627488614&amp;do=diff</link>
        <description>곱셈

풀이

	*  거듭제곱의 빠른 계산 (Exponentiation by squaring) 알고리즘으로 n제곱을 O(logn)에 계산하는 것을 요구하는 문제.
	*  그러나 파이썬에는 모듈러 계산까지 처리 가능한 내장 pow함수가 있기 때문에, 굳이 구현할 필요 없이 그냥 가져다 쓰면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1640?rev=1690215110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-24T16:11:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 뒤집기</title>
        <link>https://teferi.net/ps/problems/boj/1640?rev=1690215110&amp;do=diff</link>
        <description>동전 뒤집기

풀이

	*  열과 행이 모두 홀수개인 경우만 주어진다는 점을 우선 기억해두자.
	*  한 열을 플립할때 1의 갯수의 홀짝이 바뀌는 열과 행을 생각해보면, 열은 플립한 열만 바뀌고, 행은 모든 행이 바뀐다. 열과 행을 합쳐서 짝수개가 바뀌게 된다. 한 행을 플립할 때에도 마찬가지. 결국 모든 행동은 1이 홀수개인 열과 행의 갯수를 변화시키게 될텐데, 그 변화량은 항상 짝수개라는 것을 알수 있다. 따라서 처음에 1의 갯수가 홀수인 행과 열을 합친 갯수가 홀수개라면, 목표를 달성하는 방법이 불가능하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1644?rev=1658545792&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-23T03:09:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수의 연속합</title>
        <link>https://teferi.net/ps/problems/boj/1644?rev=1658545792&amp;do=diff</link>
        <description>소수의 연속합

풀이

	*  소수들을 먼저 찾아서 리스트에 저장해두고 거기에서 합이 N이 되는 연속된 구간의 갯수를 찾으면 된다.
	*  n이하의 소수들을 모두 찾는 것은 에라토스테네스의 체를 이용해서 O(nloglogn)에 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1647?rev=1666081253&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:20:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>도시 분할 계획</title>
        <link>https://teferi.net/ps/problems/boj/1647?rev=1666081253&amp;do=diff</link>
        <description>도시 분할 계획

풀이

	*  조건에 맞는 경로들은, 최소 신장 트리 (Minimum Spanning Tree / MST)에서 가장 비싼 엣지를 제거한 것과 같다
	*  최소 신장 트리를 다 구한 다음에 그중에서 가장 비싼 엣지의 코스트를 빼주어도 되고, 크루스칼 알고리즘을 직접 구현해서 쓸 경우에는 N-2개의 엣지가 추가될때까지 돌리면 된다. 여기에서는 teflib를 사용해서 최소신장트리를 모두 구한다음에, 가장 비싼 엣지의 코스트를 빼주는 방식으로 구현.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1654?rev=1650635033&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-22T13:43:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>랜선 자르기</title>
        <link>https://teferi.net/ps/problems/boj/1654?rev=1650635033&amp;do=diff</link>
        <description>랜선 자르기

풀이

	*  파라메트릭 서치로 풀 수 있는 문제
	*  길이가 l인 랜선을 최대 몇개 만들수 있는지는, 간단하게 각 랜선을 l로 나눈 몫의 합으로 구할수 있다. 만들수 있는 랜선의 갯수가 N이상이 되는 l의 최댓값을 이분 탐색으로 찾으면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1655?rev=1627663663&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-30T16:47:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가운데를 말해요</title>
        <link>https://teferi.net/ps/problems/boj/1655?rev=1627663663&amp;do=diff</link>
        <description>가운데를 말해요

풀이

	*  데이터가 계속 추가될때마다 median을 갱신하는 문제이다. 
	*  이 문제는 Running Median 이라고도 불리는데, max힙과 min힙, 두개의 힙을 사용해서 구현 가능하다. 
	*  이렇게 구현할 경우, 일반 max힙이나 min힙이 하는 것처럼, O(1)에 peek, O(logn)에 push와 pop이 가능하다. 자세한 것은 링크 참조.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1659?rev=1770801254&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-11T09:14:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 (Hard)</title>
        <link>https://teferi.net/ps/problems/boj/1659?rev=1770801254&amp;do=diff</link>
        <description>수 (Hard)

풀이

	*  1628에서 제한을 늘린 문제이다. 대회(2007 ICPC 서울예선) 에서 출제되었던 원본 문제은 제한이 작은 버전이었고, 거기에서는 O(n^2)으로도 통과가 가능했으나, 이 문제에서는 O(n) 알고리즘이 필요하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1667?rev=1665649181&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-13T08:19:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>지민이의 테러 Season IV</title>
        <link>https://teferi.net/ps/problems/boj/1667?rev=1665649181&amp;do=diff</link>
        <description>지민이의 테러 Season IV

풀이

	*  장애물 경기과 거의 동일한 문제이다. 동일한 방식으로 최단 거리를 계산한 뒤에, 마지막에 출력하는 답의 형식만 다르다. 풀이는 그쪽을 참고.
	*  BBST의 용도로 OrderStatisticTree를 사용했는데, 그러기 위해서 음수와 양수가 섞여있는 좌표들을 모두 양수가 되도록 매핑하는 작업이 추가로 필요했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1676?rev=1769415975&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-26T08:26:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>팩토리얼 0의 개수</title>
        <link>https://teferi.net/ps/problems/boj/1676?rev=1769415975&amp;do=diff</link>
        <description>팩토리얼 0의 개수

풀이

	*  10^e가 n!을 나누는 가장 큰 e값, 다시말해 n!에 포함된 10의 개수를 구하면 된다. 10=2*5 이므로 이는 n!에 포함된 2의 개수와 5의 개수 중 작은 것을 취하면 되는데, 이 값은 언제나 5의 개수가 작으므로, 결국 n!에 포함된 5의 개수만 구하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1687?rev=1772633391&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T14:09:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬 찾기</title>
        <link>https://teferi.net/ps/problems/boj/1687?rev=1772633391&amp;do=diff</link>
        <description>행렬 찾기

풀이

	*  1로만 이루어진 최대 직사각형 을 찾는 문제.  Parcel과도 동일한 문제.
	*  O(n)의 '히스토그램에서 가장 큰 직사각형 찾기'를 1행~i행 까지로 만든 누적합 배열에 n번 적용하는 방식으로 O(n^2)에 풀수 있다.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1689?rev=1685414128&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-30T02:35:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>겹치는 선분</title>
        <link>https://teferi.net/ps/problems/boj/1689?rev=1685414128&amp;do=diff</link>
        <description>겹치는 선분

풀이

	*  강의실 배정과 같은 유형. 풀이는 그쪽 참고.

코드



boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1693?rev=1636124652&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-05T15:04:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리 색칠하기</title>
        <link>https://teferi.net/ps/problems/boj/1693?rev=1636124652&amp;do=diff</link>
        <description>트리 색칠하기

풀이

	*  단순하게 생각하면, 1번과 2번 색깔로만 트리를 색칠하면 될것 같지만 그렇게는 안된다. 반례는 A노드와 B노드가 연결되어 있고, A노드와 B노드에는 각각 10개씩의 리프노드가 붙어있는 트리를 떠올려보면, 리프노드를 모두 1로 색칠하고 A와 B노드를 2와 3으로 색칠해야 한다는 것을 알 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1699?rev=1679323553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-20T14:45:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제곱수의 합</title>
        <link>https://teferi.net/ps/problems/boj/1699?rev=1679323553&amp;do=diff</link>
        <description>제곱수의 합

풀이

	*  제곱수의 합 (More Huge)의 (많이) 쉬운 버전. Four Squares과는 거의 동일한 문제이다
	*  풀이는 제곱수의 합을 참고. Four Squares와 동일한 코드를 사용했다

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1700?rev=1695623104&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-25T06:25:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>멀티탭 스케줄링</title>
        <link>https://teferi.net/ps/problems/boj/1700?rev=1695623104&amp;do=diff</link>
        <description>멀티탭 스케줄링

풀이

	*  이 문제는 운영체제 분야에서 중요하게 다뤄지는 Page Replacement 문제를 멀티탭에 비유해서 옮겨놓은 문제이다.
	*  이렇게 모든 디바이스의 사용 타이밍이 offline으로 전부 주어져있는 경우에는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1707?rev=1680620067&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-04T14:54:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이분 그래프</title>
        <link>https://teferi.net/ps/problems/boj/1707?rev=1680620067&amp;do=diff</link>
        <description>이분 그래프

풀이

	*  그래프가 이분 그래프인지만 판별하면 되는 기본 문제. 시간복잡도는 O(V+E)

코드



	*  Dependency: 
		*  teflib.graph.create_graph_from_input
		*  teflib.graph.two_coloring


boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1711?rev=1739888378&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T14:19:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>직각삼각형</title>
        <link>https://teferi.net/ps/problems/boj/1711?rev=1739888378&amp;do=diff</link>
        <description>직각삼각형

풀이

	*  직각 삼각형의 개수 과 동일한 문제이다. 풀이는 그쪽을 참고.
	*  문제의 입력 범위까지 직각 삼각형의 개수와 동일한데 이쪽이 티어가 낮은것은, 제한시간이 5초로 길기 때문이다. 이로 인해서 O(n^3) 알고리즘이 빡빡하게 돌아간다고 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1715?rev=1657037580&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T16:13:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드 정렬하기</title>
        <link>https://teferi.net/ps/problems/boj/1715?rev=1657037580&amp;do=diff</link>
        <description>카드 정렬하기

풀이

	*  그리디한 방식으로 가장 작은 묶음 두개를 골라서 합치는 것을 반복하는 것이 최적이다.
	*  가장 작은 묶음을 꺼내고, 새 묶음을 추가하는 작업은 우선순위 큐 (Priority Queue)를 통해서 처리하면 된다. pop과 push 모두 O(logn)이 걸린다. 이렇게 두 묶음을 합치는 작업을 n-1번 해야지 한묶음이 되므로, 총 시간복잡도는 O(nlogn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1717?rev=1634483505&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T15:11:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>집합의 표현</title>
        <link>https://teferi.net/ps/problems/boj/1717?rev=1634483505&amp;do=diff</link>
        <description>집합의 표현

풀이

	*  Disjoint Set의 기본 연산을 구현하는 튜토리얼적인 문제. 그냥 Disjoint Set을 구현해서 Union과 Find 연산을 사용하면 된다
	*  시간복잡도는 O(m*α(n))

코드



	*  Dependency: teflib.disjointset.DisjointSet

boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1738?rev=1632410300&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T15:18:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>골목길</title>
        <link>https://teferi.net/ps/problems/boj/1738?rev=1632410300&amp;do=diff</link>
        <description>골목길

풀이

	*  오민식의 고민와 비슷하다. 최대한 많이 버는 경로를 구하는 문제를, 각 가중치들의 부호를 반대로 하면, 단일 출발지 최단 경로 (Single Source Shortest Path) 문제로 풀 수 있게 된다. 이때는 단일 출발지 최단 경로 (Single Source Shortest Path)에서 설명한 대로 SPFA를 쓰면 O(VE)에 풀 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1739?rev=1667489407&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-03T15:30:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>도로 정비하기</title>
        <link>https://teferi.net/ps/problems/boj/1739?rev=1667489407&amp;do=diff</link>
        <description>도로 정비하기

풀이

	*  출발점과 도착점의 가로 좌표와 세로 좌표가 모두 다르다면, 갈수있는 가능한 경로는 두가지이다. 출발점에서 연결된 가로방향 도로와 세로방향 도로를 h1과 v1 이라 하고, 도착점에 연결된 도로들을 h2와 v2라고 한다면, 가능 경로는 h1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1753?rev=1663349422&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-16T17:30:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최단경로</title>
        <link>https://teferi.net/ps/problems/boj/1753?rev=1663349422&amp;do=diff</link>
        <description>최단경로

풀이

	*  양수 가중치를 갖는 방향그래프에서의 최단경로. 따라서, 다익스트라 알고리즘을 쓰면 끝나는 문제이다.
	*  문제에서 친절하게 강조했지만, 서로 다른 두 정점 사이에 여러 개의 간선이 존재할 수도 있음에 유의하자. 가장 짧은 간선만 남기면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1759?rev=1642169118&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-14T14:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>암호 만들기</title>
        <link>https://teferi.net/ps/problems/boj/1759?rev=1642169118&amp;do=diff</link>
        <description>암호 만들기

풀이

	*  n개 중에서 m개를 뽑는데, 알파벳 순으로만 뽑아야 한다면, 파이썬에서는 굳이 백트래킹으로 알파벳순이 아닌것을 가지치기할 필요없이 그냥 itertools.combinations를 쓰면 된다. 이러면 nCm개의 암호 후보를 뽑을수 있고, 이중에서 모음의 갯수만 조건에 맞는지 확인하면 된다. 이것은 O(m)에 가능하므로 총 시간 복잡도는 O(C(n,m)*m)이다. 백트래킹을 구현해서 글자 한개를 선택할때마다 모음의 갯수를 업데이트해주다면 O(m)부분을 없앨수 있지만, 전체 시간복잡도에 비교해보면 별 의미 없다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1766?rev=1633713379&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-08T17:16:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문제집</title>
        <link>https://teferi.net/ps/problems/boj/1766?rev=1633713379&amp;do=diff</link>
        <description>문제집

풀이

	*  여러개의 가능한 위상 정렬 순서 중에서도, 특정 순서 기준으로 가장 빠른 순서에 해당되는 것을 찾는 문제 유형이다.
	*  위상 정렬 (Topological Sorting)에서 설명했듯이, DFS를 이용해서 위상정렬을 할때에는 쉽지 않지만, Kahn's algorithm을 사용할 때에는 큐를 우선순위큐로 바꿔서 써주기만 하면 쉽게 해결할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1774?rev=1665164330&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-07T17:38:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>우주신과의 교감</title>
        <link>https://teferi.net/ps/problems/boj/1774?rev=1665164330&amp;do=diff</link>
        <description>우주신과의 교감

풀이

	*  유클리디안 최소 신장 트리 (Minimum Spanning Tree / MST)의 변형. 유클리디안 최소 신장 트리는, 들로네 삼각분할을 이용한 고급 알고리즘을 사용하지 않는 범위에서는, 그냥 완전 그래프를 만들고서 거기에서 MST를 찾는 방식으로 구하게 된다 (</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1781?rev=1649863587&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:26:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>컵라면</title>
        <link>https://teferi.net/ps/problems/boj/1781?rev=1649863587&amp;do=diff</link>
        <description>컵라면

풀이

	*  과제와 동일한 문제. 다만 n이 커졌기 때문에, O(n^2)으로도 통과되는 과제과 달리 우선순위큐를 쓰는 O(nlogn) 솔루션으로만 통과된다.
	*  풀이는 과제 참고.

코드



boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1786?rev=1608999089&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-26T16:11:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>찾기</title>
        <link>https://teferi.net/ps/problems/boj/1786?rev=1608999089&amp;do=diff</link>
        <description>찾기

	*  문제 제목의 압박.. 너무나도 제너럴한 이름..

풀이

	*  기본적인 문자열 매칭 문제 
	*  O(n+m) 매칭 알고리즘을 사용하면, KMP나 (해시를 잘 준)라빈카프 어느쪽으로도 풀 수 있다. 여기서는 라빈카프로 해결.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1818?rev=1766033240&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-18T04:47:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>책정리</title>
        <link>https://teferi.net/ps/problems/boj/1818?rev=1766033240&amp;do=diff</link>
        <description>책정리

풀이

	*  가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)의 크기를 구해서, N에서 빼주면 된다. (정렬 문제 참고)
	*  LIS만 구하면 되므로, 시간복잡도는 O(nlogn)

코드



	*  Dependency: teflib.seqtask.longest_inc_subseq

boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1826?rev=1707364601&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-08T03:56:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연료 채우기</title>
        <link>https://teferi.net/ps/problems/boj/1826?rev=1707364601&amp;do=diff</link>
        <description>연료 채우기

풀이

	*  소위 주유소 문제의 변형. 주유소마다 판매 가격이 다른게 아니라, 판매량이 다르고 목표는 주유소 방문 횟수를 최소화하는것.
	*  기본 접근 방법은 주유소 문제와 같다. 주유소를 들를지 말지를 주유소 방문 시점에 결정하려는 생각을 버리고, 지금은 그냥 지난 다음에, 나중에 기름이 부족해지면 아까 주유소를 들렀던걸로 처리하는 것. 지나온 주유소들 중에서 가장 판매하는 양이 많은 주유소에서 샀던걸로 처리해야 하므로, 지나온 주유소들을 최대힙으로 관리하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1842?rev=1689178241&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-12T16:10:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>게임하기</title>
        <link>https://teferi.net/ps/problems/boj/1842?rev=1689178241&amp;do=diff</link>
        <description>게임하기

풀이

	*  이렇게 한쪽방향으로 기물의 위치를 이동시키는 게임들은, 각각의 기물마다 최종 상태까지 이동해야 할 거리 x를 구한다음, 돌이 x개 들어있는 무더기가 있는 님 게임의 변형이라고 변환해서 생각하면 좀더 풀이가 쉬워지는 경우가 많다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1851?rev=1646411162&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-04T16:26:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>추 정렬하기</title>
        <link>https://teferi.net/ps/problems/boj/1851?rev=1646411162&amp;do=diff</link>
        <description>추 정렬하기

풀이

	*  이 문제와 동일한 문제가 무려 3개나 더 있다. 아령, 문제제목, Cow Sorting이다.
	*  정렬했을때 각 추가 가야 할 위치들을 구해놓고 보면, 옮겨야 할 추들을 몇개의 사이클들로 분할할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1865?rev=1632409106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T14:58:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>웜홀</title>
        <link>https://teferi.net/ps/problems/boj/1865?rev=1632409106&amp;do=diff</link>
        <description>웜홀

풀이

	*  시작점을 포함하는 음수 사이클의 존재 여부를 묻는 문제이다. 그런데 시작점이 딱히 정해진 것이 아니므로, 그냥 그래프 안에 음수 사이클이 존재하는지를 찾으면 된다. 음수 사이클의 존재 여부는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1877?rev=1693213515&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-28T09:05:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>끔찍한 수열</title>
        <link>https://teferi.net/ps/problems/boj/1877?rev=1693213515&amp;do=diff</link>
        <description>끔찍한 수열

풀이

	*  합이 일정하고, 곱을 최대화 하는 분할을 먼저 생각해보자. 몇몇 수에 대해서 생각해보면, 3으로 가장 많이 쪼개는 것이 최적이라는 것을 알수 있다. 케이스를 나눠서 정확히 분류해보면..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1912?rev=1653841195&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-29T16:19:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연속합</title>
        <link>https://teferi.net/ps/problems/boj/1912?rev=1653841195&amp;do=diff</link>
        <description>연속합

풀이

	*  최대 부분합 (Maximum subarray problem) 문제. Kadane algorithm을 사용해서 O(n)에 해결가능.

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1916?rev=1663348518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-16T17:15:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최소비용 구하기</title>
        <link>https://teferi.net/ps/problems/boj/1916?rev=1663348518&amp;do=diff</link>
        <description>최소비용 구하기

풀이

	*  그냥 표준적인 다익스트라 알고리즘 활용 문제. 다익스트라 알고리즘으로 최단 경로를 구하면 된다.
	*  시간복잡도는 O(ElogV).

코드



	*  Dependency: teflib.graph.dijkstra

boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1918?rev=1606482726&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-11-27T13:12:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>후위 표기식</title>
        <link>https://teferi.net/ps/problems/boj/1918?rev=1606482726&amp;do=diff</link>
        <description>후위 표기식

	*  스택을 처음 배울 때 연습문제로 자주 등장하는 문제

풀이

	*  유명한 문제라서 해설이 여기저기 많다. 여기는 그냥 검색해서 나온 곳이지만 해설로는 충분.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1919?rev=1640262213&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:23:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>애너그램 만들기</title>
        <link>https://teferi.net/ps/problems/boj/1919?rev=1640262213&amp;do=diff</link>
        <description>애너그램 만들기

풀이

	*  두 단어에서 공통으로 있는 글자들만 남기고 나머지를 제거해주면 된다. 
	*  collections.Counter로 subtract 메소드를 처음으로 사용해 본 문제.
	*  시간복잡도는 O(n+m). (n, m은 각 단어의 글자수)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1920?rev=1626708776&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T15:32:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 찾기</title>
        <link>https://teferi.net/ps/problems/boj/1920?rev=1626708776&amp;do=diff</link>
        <description>수 찾기

풀이

	*  그냥 기본 문제.
	*  분류에는 이분 탐색으로 되어있는 것으로 보아, 정렬 후 이분탐색으로 숫자를 찾는 O(mlogn) 해법을 의도한것 같다. 그러나 set을 쓰면 코드도 간단하고 시간도 O(m)으로 더 빠르다. n개의 숫자를 읽어서 set을 만드는 시간까지 포함하면 총 시간복잡도는 O(n+m).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1922?rev=1666081201&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:20:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>네트워크 연결</title>
        <link>https://teferi.net/ps/problems/boj/1922?rev=1666081201&amp;do=diff</link>
        <description>네트워크 연결

풀이

	*  그냥 최소 신장 트리 (Minimum Spanning Tree / MST)를 구하기만 하면 되는 문제. 특별히 언급할 내용이 없다.

코드



	*  Dependency: teflib.graph.minimum_spanning_tree

boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1927?rev=1657244642&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:44:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최소 힙</title>
        <link>https://teferi.net/ps/problems/boj/1927?rev=1657244642&amp;do=diff</link>
        <description>최소 힙

풀이

	*  그냥 기본적인 우선순위 큐 (Priority Queue)문제. 
	*  heapq 모듈을 이용해서 구현하면 된다.
	*  삽입과 삭제의 시간 복잡도는 O(logn)이므로, 전체 시간 복잡도는 O(nlogn)
	*  최대 힙는 동일한 문제에서 비교 기준이 최댓값으로 바뀐 문제인데, 난이도가 실버 2로 한단계 낮게 잡혀있다. 파이썬 기준으로는 heapq모듈의 디폴트가 최소힙이므로 이 문제가 더 쉬워야 맞지만, c++에서는 라이브러리에서 제공하는 힙의 디폴트가 최대힙으로 되어있기 때문에 그쪽을 기준으로 반영된것 같다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1932?rev=1624971498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-29T12:58:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정수 삼각형</title>
        <link>https://teferi.net/ps/problems/boj/1932?rev=1624971498&amp;do=diff</link>
        <description>정수 삼각형

풀이

	*  1994년 IOI 문제. 프로그래머즈의 정수 삼각형도 동일한 문제이다. 풀이는 그쪽 참고.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1944?rev=1666082699&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:44:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>복제 로봇</title>
        <link>https://teferi.net/ps/problems/boj/1944?rev=1666082699&amp;do=diff</link>
        <description>복제 로봇

풀이

	*  문제를 이해하는게 좀 어렵긴 한데, 결국 요구하는 것은 출발 위치와 모든 열쇠의 위치가 연결되도록 경로들을 만들고 경로의 합이 최소가 되게 하라는 것이고, 이것은 결국 각 위치들을 노드로 하는 그래프에서</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1947?rev=1774519090&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T09:58:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>선물 전달</title>
        <link>https://teferi.net/ps/problems/boj/1947?rev=1774519090&amp;do=diff</link>
        <description>선물 전달

풀이

	*  기본적인 교란순열 (Derangement) 문제.
	*  모듈러가 소수가 아니기 때문에, 팩토리얼의 역수를 곱하는 일반식으로는 계산이 좀 어렵다. 덧셈과 곱셈으로만 이루어진 점화식을 사용하자.
	*  시간복잡도는 O(n)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1948?rev=1633711930&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-08T16:52:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>임계경로</title>
        <link>https://teferi.net/ps/problems/boj/1948?rev=1633711930&amp;do=diff</link>
        <description>임계경로

풀이

	*  임계 경로는 활용되는 분야가 많은 중요한 개념이긴 하지만, 구하는 방법은 그냥 위상정렬된 DAG에서 최장경로를 찾으면 끝이고, 이것은 위상정렬 순서대로 DP를 적용하는 흔한 패턴으로 풀수 있다. 자세한 내용은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1960?rev=1644163422&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-06T16:03:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬만들기</title>
        <link>https://teferi.net/ps/problems/boj/1960?rev=1644163422&amp;do=diff</link>
        <description>행렬만들기

풀이

	*  사실 직관적으로 먼저 떠오르는 것은 네트워크 플로우 (Network Flow)를 이용한 풀이이다. 각 열에 해당하는 노드와, 각 행에 해당하는 노드를 만들어서 모두 연결해준다. 그리고 소스에서 각각의 열까지 엣지를 연결하고 캐퍼시티를 그 열의 1의 갯수로 지정해주고, 또 각 행에서 싱크까지 엣지를 연결하고 캐퍼시티를 그 행의 1의 갯수로 지정해준다. 이렇게 해서 최대 유량을 구하면 되긴 하는데.. |V|=O(n), |E|=O(n^2) 의 그래프에서 계산해야 하는지라 시간이 만만치 않다..…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1963?rev=1642781852&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-21T16:17:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수 경로</title>
        <link>https://teferi.net/ps/problems/boj/1963?rev=1642781852&amp;do=diff</link>
        <description>소수 경로

풀이

	*  기본적으로는 BFS로 최단 경로를 구하는 문제이다.
	*  각 숫자에서 한자리만 바꿔서 만들수 있는 숫자 9*4=36개중에서 소수인 것들을 찾아서 큐에 넣어주면 된다. 매번 어떤 수가 소수인지 확인을 해야 하기 때문에, 미리 1000부터 9999까지의 소수 목록을 계산해놓을 필요가 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1966?rev=1628759773&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-12T09:16:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>프린터 큐</title>
        <link>https://teferi.net/ps/problems/boj/1966?rev=1628759773&amp;do=diff</link>
        <description>프린터 큐

풀이

	*  프린터과 동일한 문제. 풀이는 그쪽을 참조.

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1967?rev=1610896508&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-17T15:15:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리의 지름</title>
        <link>https://teferi.net/ps/problems/boj/1967?rev=1610896508&amp;do=diff</link>
        <description>트리의 지름

	*  트리의 지름 (1167번) 문제와 제목도 같고, 구해야 하는 것도 똑같다. 하지만 1167번은 그냥 트리이고 이 문제느 rooted tree라는 점만 다르다.

풀이

	*  트리의 지름 참고
	*  rooted tree 이므로, DP 방식을 써도 되지만,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1974?rev=1768111326&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-11T06:02:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Jump Jump Championship</title>
        <link>https://teferi.net/ps/problems/boj/1974?rev=1768111326&amp;do=diff</link>
        <description>Jump Jump Championship

풀이

	*  가장 긴 증가하는 부분수열을 복원하는 기본적인 문제
	*  시간복잡도는 O(nlogn)

코드



	*  Dependency: teflib.seqtask.longest_inc_subseq_indexes

boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1976?rev=1634483540&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T15:12:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>여행 가자</title>
        <link>https://teferi.net/ps/problems/boj/1976?rev=1634483540&amp;do=diff</link>
        <description>여행 가자

풀이

	*  여행 계획의 순서는 사실 상관이 없다. 그냥 계획에 있는 도시들이 모두 연결되어있기만 하면 여행이 가능하고, 그렇지 않다면 불가능하다.
	*  그러므로, 계획에 있는 모든 도시들이 그래프상에서 전부 연결되어있는지만 확인하면 된다. 이것은 아무 점에서나 DFS나 BFS로 탐색을 해도 되고,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1978?rev=1654159582&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T08:46:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수 찾기</title>
        <link>https://teferi.net/ps/problems/boj/1978?rev=1654159582&amp;do=diff</link>
        <description>소수 찾기

풀이

	*  주어진 수 각각에 대해서 소수 여부를 확인하는 문제
	*  여러개의 수에 대해서 소수 판별을 할 경우에는 - 각각의 수에 trial division을 적용해서 각각 소수여부를 각각 확인하는 방법과, 소수 목록을 전처리해서 만들어두고 각각의 수가 그 안에 포함되는지를 확인하는 방법이 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1990?rev=1680251935&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-31T08:38:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수인팰린드롬</title>
        <link>https://teferi.net/ps/problems/boj/1990?rev=1680251935&amp;do=diff</link>
        <description>소수인팰린드롬

풀이

	*  기본적으로는 Palindromic Primes과 같은 문제이다. 차이점은, 갯수만 출력하느냐 모든 소수를 하나씩 다 출력하느냐와 범위의 차이.
	*  Palindromic Primes에서 설명했듯이, 회문수를 먼저 만들고서 각각에 소수 테스트를 하는 것이 가장 빠른 방법이지만, 범위가 작기때문에 소수 목록을 먼저 만들고서 각각에 대해서 회문 테스트를 하는 방법도 통과한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1992?rev=1627399842&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-27T15:30:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>쿼드트리</title>
        <link>https://teferi.net/ps/problems/boj/1992?rev=1627399842&amp;do=diff</link>
        <description>쿼드트리

풀이

	*  그냥 시키는대로 구현하면 되는 문제.
	*  쿼드트리로 압축한 데이터의 크기만을 구하는 문제였던 색종이 만들기에서는 반복으로 구현했지만, 여기에서는 재귀를 써서 구현했다. 
	*  시간복잡도는 N*N + (N/2 * N/2) + (N/4 * N/4) + … + (1 * 1) = (N^2)/3 = O(N^2)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/1994?rev=1693535773&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-01T02:36:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>등차수열</title>
        <link>https://teferi.net/ps/problems/boj/1994?rev=1693535773&amp;do=diff</link>
        <description>등차수열

풀이

	*  처음에는 문제를 잘못 이해해서, 수 몇개를 골라서 순서를 유지한 채로 나열해야 한다고 생각했고, 거기에 맞춰서 O(n^2) DP 풀이를 짰다가 맞왜틀을 심하게 당했다 ㅜ
	*  고른 숫자들을 '재배열'해서 등차수열을 만드는 문제라는 것을 뒤늦게 깨닫고 잠시 멘탈이 흔들렸다가, 어떻게든 기존 풀이를 살려보려고 생각해보니, 그냥 처음에 수들을 정렬해놓고서 똑같이 풀면 될거 같았다. 그리고 그렇게 해서 진짜로 ac를 받았다! 나중에 찾아해보니 이분탐색을 이용해서 O(n^2logn)에 푸는 풀이들이 검색되던데, 내방식이 더 빠르네?…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2014?rev=1657244551&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:42:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문제제목</title>
        <link>https://teferi.net/ps/problems/boj/2014?rev=1657244551&amp;do=diff</link>
        <description>문제제목

풀이

	*  한번에 N번째 큰수를 바로 찾아낼 수 있는 방법은 없다. 소수의 곱으로 만들어질 수 있는 수들을 모두 만들어둔 다음에 그중에서 N번째 수를 찾아야 한다. 
	*  소수의 곱으로 만들어질 수 있는 수는 무한개이다. 이중에서 N번째 이하가 될 가능성이 있는 수들만 어떤 휴리스틱으로 잘 추려내서 모은 뒤에 정렬하면 될거 같지만, 그렇게 타이트하게 걸러낼수 있는 휴리스틱을 찾기가 어렵다. 후보수의 갯수를 너무 넉넉하게 잡으려 하면 메모리 초과가 난다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2015?rev=1656779498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-02T16:31:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수들의 합 4</title>
        <link>https://teferi.net/ps/problems/boj/2015?rev=1656779498&amp;do=diff</link>
        <description>수들의 합 4

풀이

	*  A[i]부터 A[j]까지의 부분합은 A[0]부터 A[j]까지의 누적합에서 A[0]부터 A[i-1]까지의 누적합을 뺀 값과 같다. 
	*  따라서 원래 배열에서 부분합이 K인 구간을 찾는 것은, 누적합 배열에서 차이가 K인 두 원소를 찾는것과 동일하다. 이는 간단하게 O(n)에 구현 가능</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2041?rev=1647408725&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-16T05:32:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자채우기</title>
        <link>https://teferi.net/ps/problems/boj/2041?rev=1647408725&amp;do=diff</link>
        <description>숫자채우기

풀이

	*  발상:★★★, 구현:★★★
	*  퍼즐 문제에 가까운, 순수 아이디어 문제
	*  전체 그리드에서 아무 2×2 영역을 잡았을때, 값이 W, X, Y, Z 이고 차이들이 a,b,c,d라고 해보자. 아래 그림 참고</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2042?rev=1657245069&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:51:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 구하기</title>
        <link>https://teferi.net/ps/problems/boj/2042?rev=1657245069&amp;do=diff</link>
        <description>구간 합 구하기

풀이

	*  기본적인 구간합 쿼리 + 포인트 업데이트 쿼리 문제.
	*  펜윅 트리나 세그먼트 트리를 사용하면, 트리를 만드는데에 O(n), 각 쿼리를 처리하는 데에 O(logn), 그래서 전체 O(n + (m+k)logn)에 해결 가능하다.
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2051?rev=1647426043&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-16T10:20:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최소 버텍스 커버</title>
        <link>https://teferi.net/ps/problems/boj/2051?rev=1647426043&amp;do=diff</link>
        <description>최소 버텍스 커버

풀이

	*  이분 그래프에서 최소 버텍스 커버를 구하는 문제.
	*  이분 그래프에서 최대 매칭의 크기와 최소 버텍스 커버의 크기가 같다는 쾨닉의 정리는 많이 쓰이지만, 최소 버텍스 커버의 원소들을 실제로 구하는 것이 필요한 문제는 흔하지는 않다.. 최소 버텍스 커버 원소들을 구하는 방법은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2056?rev=1607007672&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-03T15:01:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>작업</title>
        <link>https://teferi.net/ps/problems/boj/2056?rev=1607007672&amp;do=diff</link>
        <description>작업

풀이

	*  위상 정렬 (Topological Sorting)의 대표적인 응용인 임계 경로의 길이를 구하는 문제.
	*  원래는 위상 정렬을 수행하면서 길이를 계산하는 것이 일반적인 방법인데, 이 문제에서는 주어지는 데이터는 이미 위상정렬이 되어있는 상태이다. 따라서 위상정렬된 결과에서 임계 경로만 계산하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2075?rev=1657037610&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T16:13:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N번째 큰 수</title>
        <link>https://teferi.net/ps/problems/boj/2075?rev=1657037610&amp;do=diff</link>
        <description>N번째 큰 수

풀이

	*  기본적인 방법은 그냥 전체 입력을 다 리스트에 저장해놓고서 정렬하거나 선택알고리즘을 적용하는 것이다. 하지만 이 문제에서는 메모리 제한이 걸려있어서 전체 입력을 리스트에 저장하지 않는 방법이 필요하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2087?rev=1692334833&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-18T05:00:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>암호문</title>
        <link>https://teferi.net/ps/problems/boj/2087?rev=1692334833&amp;do=diff</link>
        <description>암호문

풀이

	*  얼핏보면 복잡한 문제 같아보이는데, 이해하고 나면 그냥 Subset Sum Problem이다. 합이 2,000,000,000 으로 매우 크므로 DP로 구할수는 없지만, 대신 n이 작기 때문에 meet in the middle 을 써서 구해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2096?rev=1639231518&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-11T14:05:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>내려가기</title>
        <link>https://teferi.net/ps/problems/boj/2096?rev=1639231518&amp;do=diff</link>
        <description>내려가기

풀이

	*  내려가기 2의 어려운 버전. 인풋은 모두 동일하지만, 메모리 제한이 걸려있다.
	*  O(n) 시간복잡도의 DP로 푸는 것은 동일하지만, 내려가기 2는 O(n)의 dp 테이블을 만들어서 푸는 것이 가능했지만, 여기에서는 반드시 슬라이딩 윈도우 테크닉을 사용해서 공간 복잡도를 O(1)으로 만들어야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2108?rev=1629816742&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-24T14:52:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>통계학</title>
        <link>https://teferi.net/ps/problems/boj/2108?rev=1629816742&amp;do=diff</link>
        <description>통계학

풀이

	*  산술평균과 범위는 간단하게 O(n)으로 계산 가능하다. 중앙값은 선택 알고리즘을 사용하면 O(n)에 계산이 가능하지만, 보통은 그냥 O(nlogn)으로 정렬한 뒤에 해당 값을 찾는것이 더 빠르다. 최빈값도 정렬을 한 이후라면 쉽게 O(n)에 찾을 수 있고, 각 숫자별 카운팅을 한다면 정렬 없이 그냥 O(n)에 구할수도 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2110?rev=1626708819&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T15:33:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>공유기 설치</title>
        <link>https://teferi.net/ps/problems/boj/2110?rev=1626708819&amp;do=diff</link>
        <description>공유기 설치

풀이

	*  파라메트릭 서치로 푸는 문제. 
	*  C개로 X 이상의 거리를 유지할수 있다.
	*  X를 입력으로 받아서, C개의 공유기를 사용해서 공유기 사이의 거리가 전부 X 이상인 배치가 가능한지를 확인하는 함수를 만들면 된다. 이 함수가 true를 리턴하는 X의 최댓값을 이진 탐색으로 찾는다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2133?rev=1627748047&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T16:14:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>타일 채우기</title>
        <link>https://teferi.net/ps/problems/boj/2133?rev=1627748047&amp;do=diff</link>
        <description>타일 채우기

	*  프로그래머스의 3 x n 타일링과 동일한 문제이다.
	*  BOJ의 타일 채우기 2도 동일한 문제이다
		*  n의 범위만 다르다. 이 문제는 O(n)으로 풀어도 통과 가능하게 되어 있고, 타일 채우기 2는 O(logn)으로 풀어야만 통과 가능하게 되어 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2150?rev=1666337042&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-21T07:24:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Strongly Connected Component</title>
        <link>https://teferi.net/ps/problems/boj/2150?rev=1666337042&amp;do=diff</link>
        <description>Strongly Connected Component

풀이

	*  강한 연결 요소 (Strongly Connected Component / SCC)의 기본 문제. 주어진 그래프에서 SCC들을 추출하기만 하면 된다.
	*  사실 추출하기만 하면 된다고 하기엔, 사소하지만 출력할때 SCC들을 정점번호순으로 정렬해야 하는 요구사항이 하나 더 있긴 하다. 그래서 시간복잡도에도 SCC를 구하는 O(V+E)에, SCC들을 정렬하는 O(VlogV)까지 추가해서 적었다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2151?rev=1642920181&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-23T06:43:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>거울 설치</title>
        <link>https://teferi.net/ps/problems/boj/2151?rev=1642920181&amp;do=diff</link>
        <description>거울 설치

풀이

	*  그래프를 잘 만들어서 최단거리 문제로 풀수 있는 문제
	*  각 셀의 위치와 이동 방향의 조합을 노드로 모델링 할수 있다. 현재 방향으로 위치가 인접한 노드들간에는 비용이 0인 엣지를, 현재 셀이 '!' 일때 방향이 90도 차이나는 노드와는 비용이 1인 엣지를 만들어서 그래프를 만들면, 0-1 BFS와 같은 방식으로 해결할수 있다. 그냥 위치가 같은 열이나 행에 있고 방향이 같은 노드들 (=비용이 0인 엣지로 이어진 노드들)을 하나로 묶어서 노드를 만들면 일반 BFS를 돌려서 풀수도 있다. 노드의 갯수는 O(4*N^2) = O(N^2) 개이고, 각 노드는 현재 방향으로 인접한 셀로 이동하든가, 90/-90도 회전하든가 하는 3가지의 엣지가 있으므로 엣지의 갯수도 O(N^2). 총 시간복잡도는 O(N^2)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2161?rev=1628176920&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-05T15:22:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드1</title>
        <link>https://teferi.net/ps/problems/boj/2161?rev=1628176920&amp;do=diff</link>
        <description>카드1

풀이

	*  그냥 시키는대로 구현하면 된다. 
	*  카드들을 deque로 저장하면, 맨 위의 카드를 버리는 것과, 맨 위의 카드를 맨 아래로 옮기는 것을 둘 다 O(1)에 할수 있다. 따라서 전체 시간복잡도는 O(n)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2164?rev=1628242670&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-06T09:37:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드2</title>
        <link>https://teferi.net/ps/problems/boj/2164?rev=1628242670&amp;do=diff</link>
        <description>카드2

풀이

	*  카드1에서 N의 범위를 늘리고, 마지막 남는 카드만 출력하게 변형한 문제.
	*  N이 늘어났지만, 그래도 최대 500,000 이기 때문에 deque를 사용해서 O(n)에 구현해도 여유있게 풀리기는 한다.$ J_{n,2} = 1+2(n-2^{\lfloor{log_{2}n}\rfloor}) $</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2166?rev=1681709218&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-17T05:26:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>다각형의 면적</title>
        <link>https://teferi.net/ps/problems/boj/2166?rev=1681709218&amp;do=diff</link>
        <description>다각형의 면적

풀이

	*  다각형의 넓이를 구하는 기본 문제. 구하는 방법은 링크 참고.
	*  시간복잡도는 O(n)

코드



	*  Dependency: teflib.geometry.twice_of_polygon_area

boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2169?rev=1637345892&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-19T18:18:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>로봇 조종하기</title>
        <link>https://teferi.net/ps/problems/boj/2169?rev=1637345892&amp;do=diff</link>
        <description>로봇 조종하기

풀이

	*  만약 아래쪽과 오른쪽으로만 이동이 가능하다면, 굉장히 흔한 기초 DP문제이지만, 왼쪽으로도 이동이 가능하기때문에 좀더 생각해야 하는 문제가 되었다.
	*  같은칸을 중복방문할수 없다는 이야기는, 같은 행에서는 왼쪽이나 오른쪽 한쪽 방향으로만 이동해야 한다는 말이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2180?rev=1684911244&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-24T06:54:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소방서의 고민</title>
        <link>https://teferi.net/ps/problems/boj/2180?rev=1684911244&amp;do=diff</link>
        <description>소방서의 고민

풀이

	*  Exchange arguments를 통해 그리디한 풀이를 도출해낼수 있다.
	*  현재 시간이 t0일때, 
		*  i번-&gt;j번 순서로 고르고 나면 시간은 (t0*a_i+b_i)*a_j + b_j
		*  j번-&gt;i번 순서로 고르고 나면 시간은 (t0*a_j+b_j)*a_i + b_i</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2190?rev=1695632596&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-25T09:03:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>점 고르기 2</title>
        <link>https://teferi.net/ps/problems/boj/2190?rev=1695632596&amp;do=diff</link>
        <description>점 고르기 2

풀이

	*  효율적으로 풀어야 한다면, 스위핑과 좌표압축과 레이지 세그먼트 트리 (구간 합 update + 구간 max 쿼리) 를 이용하는 전형적인 방식의O(nlogn)풀이를 쉽게 떠올릴수 있다. 하지만 접근방식이 전형적이지 구현이 간단하다는 말은 아니다..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2193?rev=1640261605&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:13:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이친수</title>
        <link>https://teferi.net/ps/problems/boj/2193?rev=1640261605&amp;do=diff</link>
        <description>이친수

풀이

	*  간단한 DP 문제이다.
	*  f[i]를 0으로 끝나는 길이 i짜리 이친수, g[i]를 1로 끝나는 길이 i짜리 이친수라고 하면 점화식은 아래처럼 나온다
		*  f[i+1] = f[i]+g[i], g[i+1] = f[i]

	*  g[i]를 f[i-1]로 치환하면 f[i+1] = f[i] + f[i-1]이니까 피보나치 수열 형태가 된다. 우리가 구하는 N자리 이친수는 f[N]+g[N]이니까 f[N+1]과 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2207?rev=1667494189&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-03T16:49:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가위바위보</title>
        <link>https://teferi.net/ps/problems/boj/2207?rev=1667494189&amp;do=diff</link>
        <description>가위바위보

풀이

	*  기본적인 2-SAT문제. 사실상 2-SAT - 3 에서 문제 시나리오만 추가한 것과 같다. (인풋 형식도 동일하다보니,.)
	*  시간복잡도는 O(n+m)

코드



	*  Dependency: teflib.twosat.TwoSat

boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2212?rev=1643386072&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-28T16:07:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>센서</title>
        <link>https://teferi.net/ps/problems/boj/2212?rev=1643386072&amp;do=diff</link>
        <description>센서

풀이

	*  문제 설명을 이해하는게 조금 까다롭다. 집중국들의 수신 영역이 겹치게 되면 당연히 최적이 아니니까, 센서들이 소팅되어있다고 하면 1번째 집중국은 1번부터 i번 센서의 위치까지를 커버하고, 2번째 집중국은 i+1번부터 j번 센서의 위치까지를 커버하고, 3번 집중국은 j+1번째부터</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2217?rev=1640971441&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-31T17:24:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>로프</title>
        <link>https://teferi.net/ps/problems/boj/2217?rev=1640971441&amp;do=diff</link>
        <description>로프

풀이

	*  k개의 로프를 썼을때 각각의 로프에 걸리는 중량은 동일하다. 그말은 k개의 로프를 쓸 경우에는 가장 강한 로프 k개를 쓰는것이 최적이라는 뜻이고, 이때 들수 있는 중량은 k번째로 강한 로프에 의해서 결정되다는 뜻이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2225?rev=1640970925&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-31T17:15:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>합분해</title>
        <link>https://teferi.net/ps/problems/boj/2225?rev=1640970925&amp;do=diff</link>
        <description>합분해

풀이

	*  문제를 바꿔쓰면, 학교에서 경우의 수를 배울때 풀던 기본 문제인 'N개의 사과를 K명에게 나눠주는 방법의 수를 구하시오'와 같은 문제이다. 이 문제의 답은 중복조합 ${_{N}H_{K}} = {_{N+K-1}C_{N}} $ 으로 표현된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2230?rev=1638929151&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-08T02:05:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 고르기</title>
        <link>https://teferi.net/ps/problems/boj/2230?rev=1638929151&amp;do=diff</link>
        <description>수 고르기

풀이

	*  차이가 X에 가장 가까운 쌍을 구하는 문제. 
	*  정렬된 리스트에서, 이진 검색 (Binary search)이나 투 포인터를 사용해서 풀 수 있다. 투 포인터를 사용하면 O(n), 이진 탐색을 사용하면 O(nlogn)이지만, 어차피 처음에 배열을 정렬하는데에 O(nlogn)이 걸리기 때문에 총 시간복잡도는 O(nlogn)이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2247?rev=1623255710&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-09T16:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>실질적 약수</title>
        <link>https://teferi.net/ps/problems/boj/2247?rev=1623255710&amp;do=diff</link>
        <description>실질적 약수

풀이

	*  실질적 약수의 합은, 모든 약수의 합에서 1과 n을 뺀것이다. SOD(n) = σ(n) - 1 - n
		*  n==1일때는 SOD(1) = σ(1) - 1 임에 유의.

	*  CSOD(n) = SOD(1)+SOD(2)+...+SOD(n) = σ(1)+σ(2)+...+σ(n) - (n - 1) - (1 + 2 +</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2263?rev=1641315550&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-04T16:59:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리의 순회</title>
        <link>https://teferi.net/ps/problems/boj/2263?rev=1641315550&amp;do=diff</link>
        <description>트리의 순회

	*  inorder, preorder, postorder의 대한 개념은 트리 (Tree) 참고

풀이

	*  트리과 유사한 문제. 이 문제는 postorder와 inorder로부터 preorder을 찾고, 트리은 preorder와 inorder로부터 postorder을 찾는다.
	*  inorder 순회 순서는 [왼쪽 서브 트리]ROOT[오른쪽 서브 트리] 로 구성되어 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2268?rev=1657246197&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:09:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수들의 합 7</title>
        <link>https://teferi.net/ps/problems/boj/2268?rev=1657246197&amp;do=diff</link>
        <description>수들의 합 7

풀이

	*  구간 합 구하기와 동일하게, 아무 응용 없이 기본적인 구간합 쿼리 + 포인트 업데이트 쿼리를 묻는 문제.
	*  다만 쿼리의 갯수가 최대 1,000,000으로 상당히 커서 시간이 빡빡하다. Python으로 제출시 세그먼트 트리로는 시간 초과가 났고, 펜윅트리로만 통과됐다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2287?rev=1657009383&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T08:23:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>모노디지털 표현</title>
        <link>https://teferi.net/ps/problems/boj/2287?rev=1657009383&amp;do=diff</link>
        <description>모노디지털 표현

풀이

	*  N으로 표현와 같은 문제. 풀이는 그쪽 참고. 코드는 조금 더 다듬었다.

코드



boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2292?rev=1633456931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-05T18:02:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>벌집</title>
        <link>https://teferi.net/ps/problems/boj/2292?rev=1633456931&amp;do=diff</link>
        <description>벌집

풀이

	*  간단한 수학문제
	*  거리가 1인 칸이 1개인것만 제외하면, 거리가 2인 칸은 6개, 3인 칸은 12개, 4인 칸은 18개.. 이렇게 거리가 x인 칸의 갯수는 6(n-1)개이다.
	*  그래서 거리가 x이하인 칸의 갯수는 1 + sigma(6*(i-1)) = 1 + 3*x*(x-1) 개.$n \geq 2+3(x-1)(x-2)$$ \frac{(n-2)}{3} + \frac{1}{4} \geq (x-\frac{3}{2})^2$$x \leq \sqrt{\frac{(n-2)}{3} + \frac{1}{4}} + \frac{3}{2}$$x=\lfloor\frac{\sqrt{12n-15}+9}{6}\rfloor$</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2293?rev=1741789707&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-12T14:28:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 1</title>
        <link>https://teferi.net/ps/problems/boj/2293?rev=1741789707&amp;do=diff</link>
        <description>동전 1

풀이

	*  동전 교환 가짓수 문제의 표준적인 문제. 풀이는 그쪽 참고. DP를 이용해서 O(nk)에 풀수 있다. 

코드



boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2322?rev=1646411321&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-04T16:28:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>아령</title>
        <link>https://teferi.net/ps/problems/boj/2322?rev=1646411321&amp;do=diff</link>
        <description>아령

풀이

	*  추 정렬하기, 아령, 문제제목, Cow Sorting이 모두 동일한 문제이다. 풀이는 추 정렬하기을 참고.

코드



boj ps:problems:boj:플래티넘_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2342?rev=1633706008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-08T15:13:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Dance Dance Revolution</title>
        <link>https://teferi.net/ps/problems/boj/2342?rev=1633706008&amp;do=diff</link>
        <description>Dance Dance Revolution

풀이

	*  기초적인 DP 문제
	*  DP[n][(x,y)] 를 두 발의 위치가 x와 y인 상태로 n번째지시사항까지 처리했을때의 최소 힘이라고 정의하고, energy(a, b)를 a에 있던 발을 b로 옮길때 드는 힘이라고 정의하자. n번째 지시사항이 x였다면 점화식은 다음의 형태로 나온다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2343?rev=1643472259&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-29T16:04:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>기타 레슨</title>
        <link>https://teferi.net/ps/problems/boj/2343?rev=1643472259&amp;do=diff</link>
        <description>기타 레슨

풀이

	*  전형적인 파라메트릭 서치 문제
	*  블루레이의 길이가 t일때, 강의들을 M개의 블루레이에 모두 넣을수 있는지를 체크하는 결정함수를 만들어서, 이분탐색으로 t의 최소값을 찾는다.
	*  결정함수는 그리디하게 강의들을 최대한 많이 현재 블루레이에 추가하고, 불가능한 경우 새 블루레이를 만드는 식으로 시뮬레이션 해서 필요한 블루레이가의 갯수가 M이하일때 참을 리턴하는 식으로 구현하면 된다. 결정함수의 시간 복잡도는 O(n)이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2346?rev=1651561660&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T07:07:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>풍선 터뜨리기</title>
        <link>https://teferi.net/ps/problems/boj/2346?rev=1651561660&amp;do=diff</link>
        <description>풍선 터뜨리기

풀이

	*  요세푸스 문제와 비슷한 문제. 이동해야 하는 값이 고정되어있지 않고 계속 바뀐다는 것만 다르다.
	*  Order Statistic Tree를 사용해서 O(nlogn)에 풀수 있지만, n이 작다보니 그냥 덱을 이용해서 O(n^2)에 풀어도 빠르게 풀린다. 나도 그냥 덱을 이용해서 풀었다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2370?rev=1695214334&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-20T12:52:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>시장 선거 포스터</title>
        <link>https://teferi.net/ps/problems/boj/2370?rev=1695214334&amp;do=diff</link>
        <description>시장 선거 포스터

풀이

	*  이 문제를 푸는 방법은 다양하다. 
	*  가장 나이브한 방법은, 벽 전체에 대응되는 배열을 만들어서, [l,r] 구간을 덮는 포스터를 추가할때마다 배열의 [l,r] 구간을 그 포스터의 번호로 업데이트해주는 것이다. 모든 업데이트가 끝난 뒤에, 배열에 저장된 서로 다른 값들의 갯수를 계산해주면 된다. 실제 좌표를 그냥 쓰는 것은 좌표 범위가 너무 커서 안되지만, 좌표 압축을 해서 배열 크기를 O(n)으로 줄이면, 총 O(n^2)이고, 이것으로도 통과된다. (CPython으로는 힘들고 Pypy로 제출해야 하는것 같다)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2373?rev=1686839942&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-15T14:39:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fibonacci Game</title>
        <link>https://teferi.net/ps/problems/boj/2373?rev=1686839942&amp;do=diff</link>
        <description>Fibonacci Game

풀이

	*  게임규칙을 분석해서 바로 승리전략을 파악하는 것은 사실 쉽지 않고, 그래서 이런 경우에 늘 하듯이 DP를 이용해서 결과를 일일히 계산해보는 것이 정석이다. 이 문제는 N이 작기 때문에, DP를 통해서 답을 계산할수 있다. 하지만, 작은 N값들에 대해서 결과를 나열해보면 규칙성을 찾는것도 어렵지 않다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2381?rev=1732005628&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-19T08:40:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최대 거리</title>
        <link>https://teferi.net/ps/problems/boj/2381?rev=1732005628&amp;do=diff</link>
        <description>최대 거리

풀이

	*  맨해튼 거리로 가장 멀리 떨어진 두 점을 찾는 문제.
	*  풀이 방법은 링크에 설명되어있다. 시간복잡도는 O(n)

코드



boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2385?rev=1622561964&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-01T15:39:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Secret Sharing</title>
        <link>https://teferi.net/ps/problems/boj/2385?rev=1622561964&amp;do=diff</link>
        <description>Secret Sharing

풀이

	*  큰 수 만들기의 응용 문제이다.
	*  큰 수 만들기 에서의 핵심은, 수들을 늘어놓아서 가장 큰 수를 만들기 위해서는 수들을 문자열로 처리해서 정렬하되 비교함수를 x+y&lt;y+x 로 놓으면 된다는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2407?rev=1611077513&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-19T17:31:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>조합</title>
        <link>https://teferi.net/ps/problems/boj/2407?rev=1611077513&amp;do=diff</link>
        <description>조합

풀이

	*  원래 문제 의도대로라면, BigInteger 계산을 구현할 수 있는지를 묻는 것이겠지만, 파이썬에서는 기본적으로 BigInteger가 지원되니 아무 처리가 필요 없다.. 

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2437?rev=1643779691&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-02T05:28:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>저울</title>
        <link>https://teferi.net/ps/problems/boj/2437?rev=1643779691&amp;do=diff</link>
        <description>저울

풀이

	*  재미있는 그리디 아이디어로 풀리는 문제. 알고리즘 지식이 필요없이 아이디어만 필요하기 때문에 퍼즐 문제로도 좋을 듯 하다
	*  무게가 전부 정렬되어있다고 하자. a[0:i] 까지의 추를 사용해서 1부터 x까지의 무게를 모두 잴수 있다고 하다. a[i]이 x+1보다 크다면, x+1은 잴 방법이 없으므로 답은 x+1이 된다. a[i]가 x+1보다 작거나 같다면 이제 a[0:i+1]의 추를 이용하면 1부터 x+a[i] 까지의 모든 무게를 잴 수 있다. 이제 x를 x+a[i] 로 갱신하고, a[i+1]을 x+1과 비교하는 것을 반복하는 식으로 처리하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2457?rev=1639502155&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-14T17:15:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>공주님의 정원</title>
        <link>https://teferi.net/ps/problems/boj/2457?rev=1639502155&amp;do=diff</link>
        <description>공주님의 정원

풀이

	*  그리디 알고리즘
	*  3월 1일에는 꽃이 피어있어야 한다. 즉, 피는날이 3월 1일 이전인 꽃들중에서 최소 한개는 선택을 해야 한다. 이때 선택하는 꽃은, 지는 날이 가장 늦은 꽃을 선택하는 것이 최적이다. 만약에 지는날이 가장 늦은 꽃조차, 3월 1일 이전에 진다면, 3월 1일에는 아무 꽃도 피어있을수 없으므로 0을 출력하고 종료. 그렇지 않고 지는날이 3월 1일 이후의 M월 D일 이라고 한다면, 이제 다시 피는 날이 M월 D일 이전인 꽃들 중에서 한개를 선택하고, 이것을 지는날이 11월 30이후인 꽃을 고르게 될때까지 반복하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2458?rev=1631028328&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-07T15:25:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>키 순서</title>
        <link>https://teferi.net/ps/problems/boj/2458?rev=1631028328&amp;do=diff</link>
        <description>키 순서

풀이

	*  N의 범위가 다른 것을 제외하고는 Cow Contest과 같은 문제이다. 풀이는 그쪽 참고.

코드



boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2467?rev=1631809854&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-16T16:30:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>용액</title>
        <link>https://teferi.net/ps/problems/boj/2467?rev=1631809854&amp;do=diff</link>
        <description>용액

풀이

	*  두 용액과 똑같은 문제인데, 처음에 배열이 정렬된 상태로 주어진다는 점만 다르다.
	*  두 용액에 썼던 코드를 그대로 제출해도 통과 가능하다. 하지만, 이왕 이미 정렬된 상태로 주어지니, 여기에서 바로</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2470?rev=1631886279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-17T13:44:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>두 용액</title>
        <link>https://teferi.net/ps/problems/boj/2470?rev=1631886279&amp;do=diff</link>
        <description>두 용액

풀이

	*  두 수의 합 처럼 두 수의 합이 X가 되는 쌍을 찾는 문제를 풀기 위해서는 소팅과 투 포인터를 안쓰고도 그냥 해싱을 통해서 푸는 것이 더 빨랐다. 그러나 이 문제처럼 두 수의 합이 X에 가장 가까운 쌍을 찾는 문제라면, 소팅 후에</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2473?rev=1631886106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-17T13:41:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>세 용액</title>
        <link>https://teferi.net/ps/problems/boj/2473?rev=1631886106&amp;do=diff</link>
        <description>세 용액

풀이

	*  두 용액 과 똑같은 설정이지만 이번에는 두 용액이 아닌 세 용액을 섞어서 0에 가까운 용액을 만들어야 한다. 
		*  문제 출처는 KOI 2010인데, 두 용액은 중등부, 이 문제는 고등부 문제이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2517?rev=1622024733&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-26T10:25:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>달리기</title>
        <link>https://teferi.net/ps/problems/boj/2517?rev=1622024733&amp;do=diff</link>
        <description>달리기

풀이

	*  Inversion Counting을 응용한 문제. 
	*  inversion관계에 있는 (i,j) 갯수의 총합을 구하는 것이 아니라, 각 j별로 갯수를 구해주면 된다.
	*  Inversion Counting에 설명했듯이, 머지소트를 응용한 방식과 Order Statistic Tree를 이용한 방식 모두 가능하지만, Order Statistic Tree를 사용한 방식이 더 빨라서 이쪽만 코드를 수록했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2559?rev=1668738148&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T02:22:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열</title>
        <link>https://teferi.net/ps/problems/boj/2559?rev=1668738148&amp;do=diff</link>
        <description>수열

풀이

	*  슬라이딩 윈도우 기법의 가장 기본적인 형태. 시간복잡도는 O(N)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2569?rev=1646411451&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-04T16:30:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문제제목</title>
        <link>https://teferi.net/ps/problems/boj/2569?rev=1646411451&amp;do=diff</link>
        <description>문제제목

풀이

	*  추 정렬하기, 아령, 문제제목, Cow Sorting이 모두 동일한 문제이다. 풀이는 추 정렬하기을 참고.

코드



boj ps:problems:boj:플래티넘_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2574?rev=1624278436&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-21T12:27:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>마법색종이</title>
        <link>https://teferi.net/ps/problems/boj/2574?rev=1624278436&amp;do=diff</link>
        <description>마법색종이

풀이

	*  KOI 초등부 문제로 출제되었던 문제이다. 세상에..
	*  그냥 단순한 구현은, 색종이 조각들을 이진트리 형식으로 만드는 것이다. 각 리프노드가 잘라진 조각 한개한개가 된다. 점이 입력될때마다, 이진트리를 탐색해서 점이 포함된 조각에 해당되는 노드를 찾고, 그 조각을 분할해서 생기는 조각 두개를 차일드 노드들로 만드는 것을 반복하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2575?rev=1693212806&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-28T08:53:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열</title>
        <link>https://teferi.net/ps/problems/boj/2575?rev=1693212806&amp;do=diff</link>
        <description>수열

풀이

	*  끔찍한 수열 과 거의 동일한 문제.
	*  끔찍한 수열 에서는 n의 최대/최솟값, m의 최대/최솟값을 모두 구했었는데, 여기에서는 n의 최댓값과 m의 최솟값만을 출력해야 한다는 것만 다르다. 풀이는 동일해서 생략</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2609?rev=1654161714&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T09:21:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최대공약수와 최소공배수</title>
        <link>https://teferi.net/ps/problems/boj/2609?rev=1654161714&amp;do=diff</link>
        <description>최대공약수와 최소공배수

풀이

	*  그냥 단순히 GCD와 LCM을 구하는 문제. math.gcd를 쓰면 된다. 시간복잡도는 O(logn)

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2623?rev=1606324184&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-11-25T17:09:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>음악프로그램</title>
        <link>https://teferi.net/ps/problems/boj/2623?rev=1606324184&amp;do=diff</link>
        <description>음악프로그램

풀이

	*  전형적인 위상 정렬 (Topological Sorting) 문제. 딱히 추가할 설명이 없다.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2630?rev=1627487257&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-28T15:47:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>색종이 만들기</title>
        <link>https://teferi.net/ps/problems/boj/2630?rev=1627487257&amp;do=diff</link>
        <description>색종이 만들기

풀이

	*  색종이로 설명을 하긴 했지만, 쿼드트리로 압축할때의 데이터의 크기를 계산하는 문제이다. 쿼드트리로 압축한 데이터 자체를 구하는 문제로는 쿼드트리 의 약화버전
	*  특별한 알고리즘은 필요 없고 그냥 구현하면 된다. 재귀로 구현해도 되지만 여기에서는 그냥 바텀업으로 이터레이티브하게 구현했다. 어느쪽으로 구현하든 N*N + (N/2 * N/2) + (N/4 * N/4) +</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2631?rev=1766032566&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-18T04:36:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>줄세우기</title>
        <link>https://teferi.net/ps/problems/boj/2631?rev=1766032566&amp;do=diff</link>
        <description>줄세우기

풀이

	*  가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)의 크기를 구해서, N에서 빼주면 된다. (정렬 문제 참고)
	*  LIS만 구하면 되므로, 시간복잡도는 O(nlogn)

코드



	*  Dependency: teflib.seqtask.longest_inc_subseq

boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2671?rev=1741356168&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T14:02:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>잠수함식별</title>
        <link>https://teferi.net/ps/problems/boj/2671?rev=1741356168&amp;do=diff</link>
        <description>잠수함식별

풀이

	*  정규 표현식을 사용하면 딸깍으로 처리된다. 사실상  Contact 과 동일한 문제

코드



boj ps:problems:boj:골드_3 ps:teflib:linear_homogeneous_recurrence</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2696?rev=1657037801&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T16:16:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>중앙값 구하기</title>
        <link>https://teferi.net/ps/problems/boj/2696?rev=1657037801&amp;do=diff</link>
        <description>중앙값 구하기

풀이

	*  Running Median문제. 가운데를 말해요와 거의 동일하므로 풀이도 그쪽을 참고.
	*  다만, 가운데를 말해요에 비해서 입출력 형식이 쓸데없이 복잡하다. 숫자들을 10개단위로 라인을 쪼개 놓아서 번거롭다.

코드



boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2739?rev=1635780272&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-01T15:24:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구구단</title>
        <link>https://teferi.net/ps/problems/boj/2739?rev=1635780272&amp;do=diff</link>
        <description>구구단

풀이

	*  그냥 시키는대로 출력하면 되는 기초문제.

코드



boj ps:problems:boj:브론즈_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2740?rev=1625758849&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-08T15:40:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬 곱셈</title>
        <link>https://teferi.net/ps/problems/boj/2740?rev=1625758849&amp;do=diff</link>
        <description>행렬 곱셈

풀이

	*  그냥 기초적인 행렬 곱셈 문제. 
	*  이론적으로는 슈트라센 알고리즘등을 사용하면 좀더 시간복잡도를 줄일수 있지만 (O(n^3)을 O(n^2.8)정도로..), n이 100정도의 범위에서는 별 의미가 없을 듯 해서 그냥 단순한 방법으로 구현.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2749?rev=1711636559&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-28T14:35:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 수 3</title>
        <link>https://teferi.net/ps/problems/boj/2749?rev=1711636559&amp;do=diff</link>
        <description>피보나치 수 3

풀이

	*  피보나치 수 (Fibonacci numbers)를 계산하는 문제. 피보나치 수 6와 n의 범위까지 동일하지만, 모듈러가 다르다.
	*  모듈러가 10^k 형태인데, 이 경우에는 피사노 주기가 15*10^(k-1)이 된다고 알려져 있다. 따라서 이 문제에서의 피사노 주기는 1,500,000이고, (n % 1,500,000)번째의 피보나치 수만 계산하는 것으로 문제를 바꿀 수 있다. 이렇게 범위를 줄여서 풀 경우에는 O(n) 알고리즘으로도 풀이가 가능하다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2750?rev=1629821081&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-24T16:04:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 정렬하기</title>
        <link>https://teferi.net/ps/problems/boj/2750?rev=1629821081&amp;do=diff</link>
        <description>수 정렬하기

풀이

	*  그냥 입력받고 정렬해서 출력하면 끝나는 간단한 문제. 
	*  n의 범위가 더 늘어난 버전으로 수 정렬하기 2이 있다. O(n^2) 소팅 알고리즘으로도 통과 가능 여부를 다르게 한것이긴 한데, 어차피 내장 소팅을 사용하는 경우에는 두 문제의 구분이 무의미하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2751?rev=1630397688&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-31T08:14:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 정렬하기 2</title>
        <link>https://teferi.net/ps/problems/boj/2751?rev=1630397688&amp;do=diff</link>
        <description>수 정렬하기 2

풀이

	*  그냥 입력받고 정렬해서 출력하면 되는 기초 문제. 수 정렬하기에서 n이 좀더 늘어나서 O(n^2) 소팅 알고리즘으로는 안풀리지만, 어차피 내장된 소트 함수를 사용하는 입장에서는 차이가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2753?rev=1634315376&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T16:29:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>윤년</title>
        <link>https://teferi.net/ps/problems/boj/2753?rev=1634315376&amp;do=diff</link>
        <description>윤년

풀이

	*  그냥 기초문제. 딱히 쓸말 없음..

코드



boj ps:problems:boj:브론즈_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2773?rev=1740324686&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-23T15:31:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>바깥 삼각형의 중심</title>
        <link>https://teferi.net/ps/problems/boj/2773?rev=1740324686&amp;do=diff</link>
        <description>바깥 삼각형의 중심

풀이

	*  논증기하적으로 잘 증명하면 점 O가 삼각형의 수심이 된다고 한다. (증명 방법은 모름)
	*  하지만, 그걸 구하기가 어렵다면 그냥 해석기하적으로 접근해서 풀어도 가능하다. 주어진 조건에 맞춰서 점F와 점H, 그리고 점N과 직선NC를 모두 순서대로 구하고, 같은 방식으로 직선 MB를 구한 뒤에 교점을 구하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2775?rev=1633177707&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-02T12:28:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>부녀회장이 될테야</title>
        <link>https://teferi.net/ps/problems/boj/2775?rev=1633177707&amp;do=diff</link>
        <description>부녀회장이 될테야

풀이

	*  점화식을 세워보자. f(a,b) = f(a,b-1) + f(a-1,b) 가 된다.
	*  f(a,b) = C(a+b,b+1) 라 하면, C(a+b,b+1) = C(a+b-1,b) + C(a+b-1,b+1)
	*  n=a+b, k=b+1 이라 하면 C(n,k) =C(n-1,k) +C(n-1,k-1) 이라서 이항계수의 점화식이 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2805?rev=1626708811&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T15:33:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나무 자르기</title>
        <link>https://teferi.net/ps/problems/boj/2805?rev=1626708811&amp;do=diff</link>
        <description>나무 자르기

풀이

	*  파라메트릭 서치으로 푸는 방법과 그냥 정렬로 푸는 방법이 있다.
	*  떠오르기 쉬운 것은 파라메트릭 서치이다. 단계별로 풀어보기의 이분탐색 부분에 있는 문제이기도 하고, 문제 분류에도 이분 탐색으로만 되어 있다. 결정 문제는 '절단기의 높이가 주어졌을때 M미터의 이상의 나무를 가져갈수 있는가?'가 된다. 집에 가져갈수 있는 나무의 길이를 O(n)에 쉽게 계산 가능하므로 당연히 이 결정문제도 O(n)에 풀린다. 절단기의 최대 높이를 [0, n] 사이에서 이분탐색으로 찾으면 된다 (k=가장 긴 나무의 높이). 시간 복잡도는 O(nlogk).…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2812?rev=1642521320&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-18T15:55:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>크게 만들기</title>
        <link>https://teferi.net/ps/problems/boj/2812?rev=1642521320&amp;do=diff</link>
        <description>크게 만들기

풀이

	*  큰 수 만들기과 동일한 문제. 풀이는 그쪽을 참고.

코드



boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2820?rev=1620124806&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T10:40:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>자동차 공장</title>
        <link>https://teferi.net/ps/problems/boj/2820?rev=1620124806&amp;do=diff</link>
        <description>자동차 공장

풀이

	*  오일러 경로 테크닉이 추가된 구간 쿼리 문제.
	*  오일러 경로 테크닉을 적용해서 트리를 리스트로 변환해주기만 하면, 단순히 구간 업데이트 + 포인트 쿼리 문제가 된다. 이는 인접합 값의 차이로 구성된 배열을 만들어서 포인트 업데이트 + 구간 쿼리로 변환한 뒤,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2839?rev=1633109420&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-01T17:30:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>설탕 배달</title>
        <link>https://teferi.net/ps/problems/boj/2839?rev=1633109420&amp;do=diff</link>
        <description>설탕 배달

풀이

	*  3킬로그램짜리 봉지를 0개~4개까지 사용해서 각각 N킬로그램을 만들었을때 총 봉지수중 최소갯수를 구하면 된다. 3kg 봉지를 그 이상으로, 5+a개를 사용하는 것은 5kg봉지 3개와 3kg봉지 a개를 사용하는 것보다 비효율적이므로, 고려할 필요가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2840?rev=1651561671&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T07:07:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행운의 바퀴</title>
        <link>https://teferi.net/ps/problems/boj/2840?rev=1651561671&amp;do=diff</link>
        <description>행운의 바퀴

풀이

	*  그냥 반대로 시뮬레이션하면 되는 문제이긴 한데 구현이 좀 까다롭다 (그리고 문제를 이해하는것도 좀 까다롭다)
	*  n개의 칸을 ?로 초기화한 다음, 바퀴가 마지막에 가리킨 문자를 첫번째 칸에 적고 거꾸로 시뮬레이션하면서 문자들을 칸에 채워나가면 된다. 그러다가 이미 채워진 칸을 다른 문자로 채워야 하는 경우가 생기거나, 다 채우고 났을때 ?가 아닌 글자가 중복되어서 등장하게 된다면…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2847?rev=1642779140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-21T15:32:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>게임을 만든 동준이</title>
        <link>https://teferi.net/ps/problems/boj/2847?rev=1642779140&amp;do=diff</link>
        <description>게임을 만든 동준이

풀이

	*  i번째 레벨의 점수 a[i]가 i+1번째 점수 a[i+1]보다 크거나 같다면, a[i]=a[i+1]-1 이 되도록 감소시키면 된다.
	*  이렇게 a[i]를 감소시켰는데, a[i+1]을 또 감소시켜야 할 경우에는 a[i]를 거기에 맞춰서 다시 감소시켜야 하는 상황이 생긴다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2862?rev=1686838396&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-15T14:13:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수학 게임</title>
        <link>https://teferi.net/ps/problems/boj/2862?rev=1686838396&amp;do=diff</link>
        <description>수학 게임

풀이

	*  Fibonacci Game에서 N이 더 커진 버전. Fibonacci Game에서는 첫턴에 최대 N-1개의 돌을 가져갈수 있었고, 그래서 이길수 없는 경우에는 -1을 출력하도록 되어있었지만, 여기에서는 최대 N개의 돌을 가져갈수 있기때문에 이길수 없는 경우는 생기지 않는다. 하지만 이길수 있는 경우에는 최소의 돌을 가져가는 방법만 출력하라고 되어있으므로, 결과적으로 출력해야 하는 값은 이길수 없을때 -1 대신 N을 출력한다는 것을 제외하고는 동일하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2869?rev=1643248543&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T01:55:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>달팽이는 올라가고 싶다</title>
        <link>https://teferi.net/ps/problems/boj/2869?rev=1643248543&amp;do=diff</link>
        <description>달팽이는 올라가고 싶다

풀이

	*  퍼즐 퀴즈로도 유명한 문제. 어렵지는 않지만 처음 접하는 사람은 답을 V/(A-B)로 계산하는 실수를 종종 저지른다.
	*  마지막 올라갈때는 내려갈 것을 고려하지 않아도 되므로, 제대로 구하려면 (A-B) 만큼씩 n-1번 올라가고 마지막 n번째에는 A만큼 올라간다고 계산하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2870?rev=1741360001&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T15:06:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수학숙제</title>
        <link>https://teferi.net/ps/problems/boj/2870?rev=1741360001&amp;do=diff</link>
        <description>수학숙제

풀이

	*  문자열에서 수를 추출하는 것은 정규 표현식을 사용하는 것이 가장 간단하다.

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2887?rev=1666081288&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:21:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행성 터널</title>
        <link>https://teferi.net/ps/problems/boj/2887?rev=1666081288&amp;do=diff</link>
        <description>행성 터널

풀이

	*  최소 신장 트리 (Minimum Spanning Tree / MST)의 응용.
	*  완전 그래프를 그려서 O(n^2)개의 엣지를 모두 고려해서 풀려고 한다면, 프림 알고리즘을 써도 O(n^2)이 걸린다. 하지만 이 문제에서는 고려해야할 엣지 갯수를 효율적으로 줄일 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2912?rev=1620092866&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T01:47:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>백설공주와 난쟁이</title>
        <link>https://teferi.net/ps/problems/boj/2912?rev=1620092866&amp;do=diff</link>
        <description>백설공주와 난쟁이

풀이

	*  구간에서 과반수를 차지하는 값이 있는지를 찾는 문제이다. 솔루션은 여러가지가 가능하다.
	*  우선, 어떤 값이 구간 내에 몇개나 존재하는지는 O(logn)에 구할 수 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2927?rev=1622217723&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-28T16:02:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>남극 탐험</title>
        <link>https://teferi.net/ps/problems/boj/2927?rev=1622217723&amp;do=diff</link>
        <description>남극 탐험

풀이

	*  동적 연결성 문제와 경로 합 쿼리를 합쳐놓은 문제
	*  엣지를 추가해나가면서 어떤 두 노드가 연결되어있는지를 체크하는 것은 동적 연결성 에서 설명했듯, Disjoint Set을 사용해서 처리 가능하다.
	*  경로 합 쿼리는 Heavy Light Decomposition을 비롯, 여러가지 방법으로 풀이가 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2941?rev=1636982448&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T13:20:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>크로아티아 알파벳</title>
        <link>https://teferi.net/ps/problems/boj/2941?rev=1636982448&amp;do=diff</link>
        <description>크로아티아 알파벳

풀이

	*  어떻게 보면 멀티 패턴 매칭 문제이기는 한데.. 패턴들의 길이가 전부 2~3이라서 복잡한 알고리즘을 쓸 필요가 없다. 그냥 구현하면 된다
	*  좀더 깔끔한 구현방법을 생각해보자면.. 길이 3짜리의 패턴 한개만을 제외하고 보면, 같은 문자가 여러 패턴에 중복 매칭될수가 없기 때문에 그냥 각 패턴들의 매칭 횟수를 각각 세어서, 매칭 횟수만큼 전체길이에서 빼주면 된다 (2글자가 1글자로 바뀌는거라서 매칭 한번당 1씩 줄어든다). 이 방식대로라면 길이 3인 패턴의 경우는 매칭된 횟수*2를 빼줘야 하지만, 이 패턴은 길이 2인 패턴을 포함한다. 그래서 길이3짜리 패턴이 매칭되었다면, 길이 2짜리 패턴에도 이미 매칭되었을것이므로 거기에서 이미 1이 줄어들었을 것이다. 그래서 추가로 1번만 더 빼주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2981?rev=1634665068&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-19T17:37:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>검문</title>
        <link>https://teferi.net/ps/problems/boj/2981?rev=1634665068&amp;do=diff</link>
        <description>검문

풀이

	*  x랑 y가 M으로 나눈 나머지가 같다면, (x-y)는 M으로 나누어 떨어진다
	*  따라서 수들을 두개씩 묶어서 차를 구한 뒤에, 그 차들의 공약수를 구하는 방식으로 M을 구할 수 있다. 모든 공약수를 구하는 방법은, 최대공약수를 구하고 그 최대공약수의 약수들을 구하는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/2982?rev=1647409502&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-16T05:45:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>국왕의 방문</title>
        <link>https://teferi.net/ps/problems/boj/2982?rev=1647409502&amp;do=diff</link>
        <description>국왕의 방문

풀이

	*  발상:★★, 구현:★★
	*  우선 문제 이해에 좀 시간이 걸렸다. 기본적으로는 최단 경로 문제이긴 한데, 특정 시간에는 특정 엣지를 이용할수 없다는 제약이 들어간다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3000?rev=1739891907&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T15:18:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>직각 삼각형</title>
        <link>https://teferi.net/ps/problems/boj/3000?rev=1739891907&amp;do=diff</link>
        <description>직각 삼각형

풀이

	*   직각 삼각형의 개수 와 비슷해보이지만, 축에 평행한 직각삼각형만 세면 된다는 조건이 들어가기 때문에 훨씬 간단하다.
	*  한 점을 고정했을때, 그 점과 x값이 같은 점 한개와 y값이 같은 점 한개를 찾으면 그 점을 직각인 꼭짓점으로 갖는 직각삼각형을 찾을 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3008?rev=1739885430&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T13:30:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>직각 삼각형의 개수</title>
        <link>https://teferi.net/ps/problems/boj/3008?rev=1739885430&amp;do=diff</link>
        <description>직각 삼각형의 개수

풀이

	*  점 A를 기준으로, 선분 AB와 선분 AC가 직각을 이룬다면 삼각형 ABC는 직각삼각형이 된다 
	*  이 원리를 이용하면, 한 점을 고정시킨 후, 그 점을 직각이 되는 꼭짓점으로 하는 직각삼각형을 모두 찾을 수 있다. 고정한 점으로부터 각 점을 잇는 선분들의 기울기를 모두 구한 뒤에, 직각을 이루는 선분 쌍의 개수를 세면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3009?rev=1632870346&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-28T23:05:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>네 번째 점</title>
        <link>https://teferi.net/ps/problems/boj/3009?rev=1632870346&amp;do=diff</link>
        <description>네 번째 점

풀이

	*  축에 평행한 직사각형이므로, x좌표가 같은 점이 2개씩 있어야 한다. 따라서 주어진 3개의 x좌표값 중에서 중복된 값이 없는 값이 4번째 점의 x좌표가 된다. 같은 값이 없는 값을 찾는 것은 그냥 if문으로 따져도 간단하지만, 그냥 세 값을 xor해버리면 바로 얻을수 있다. y좌표도 마찬가지로 처리하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3036?rev=1629646539&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-22T15:35:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>링</title>
        <link>https://teferi.net/ps/problems/boj/3036?rev=1629646539&amp;do=diff</link>
        <description>링

풀이

	*  반지름은 원둘레랑 비례하니까 회전수의 비는 역수가 된다. 
	*  A/B를 기약분수로 표현하기 위해서는 분자 분모의 최소 공약수를 구해서 나눠주면 된다. 
	*  최소공약수는 O(logm)에 구할수 있으므로 총 시간 복잡도는 O(nlogm)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3067?rev=1694595420&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-13T08:57:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Coins</title>
        <link>https://teferi.net/ps/problems/boj/3067?rev=1694595420&amp;do=diff</link>
        <description>Coins

풀이

	*  동전와 동일한 문제
	*  Coin Change Problem의 표준적인 문제. 풀이는 그쪽 참고.

코드



boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3079?rev=1624932218&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-29T02:03:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>입국심사</title>
        <link>https://teferi.net/ps/problems/boj/3079?rev=1624932218&amp;do=diff</link>
        <description>입국심사

풀이

	*  프로그래머즈의 입국심사과 동일한 문제이다.
		*  동일한 이유는 둘다 동일한 COCI 문제를 번역한 것이기 때문이다. 입국심사대에 10억명이 몰리는 원본 문제 자체도 이미 비현실적이긴 하지만, BOJ번역에서는 친구가 10억명이 있고, 모두 비행기 한 대에 타고서 놀러간다는 설정이 되어버렸다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3107?rev=1643031901&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-24T13:45:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IPv6</title>
        <link>https://teferi.net/ps/problems/boj/3107?rev=1643031901&amp;do=diff</link>
        <description>IPv6

풀이

	*  그냥 시키는 대로 구현하기만 하면 되는 문제. 딱히 설명할 것이 없다.

코드



boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3142?rev=1708658256&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-23T03:17:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>즐거운 삶을 위한 노력</title>
        <link>https://teferi.net/ps/problems/boj/3142?rev=1708658256&amp;do=diff</link>
        <description>즐거운 삶을 위한 노력

풀이

	*  곱한 수를 계속 유지하면서 계산하는 것은 당연히 불가능하므로, 수를 소인수분해한 형태로 관리하면 된다.
	*  제곱수인지 여부만 확인하면 되므로, 각 소수 인자의 개수가 홀수인지 짝수인지만 구분해서 홀수개인 인자들만 모아서 관리하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3152?rev=1705977462&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-23T02:37:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>예쁜 숫자</title>
        <link>https://teferi.net/ps/problems/boj/3152?rev=1705977462&amp;do=diff</link>
        <description>예쁜 숫자

풀이

	*  어떤 수가 트리 노드에 매겨진다는 것은, 그 수를 p진법으로 나타냈을때 0과 1만 존재한다는 것과 동치이다.
	*  이러한 수 두개를 더하게 되면, p가 3이상일때 p진법 상에서 받아올림은 일어나지 않고, 각 자리수에는 0,1,2 만 있게된다. n의 p진 표현의 각 자릿수 숫자들을 모은 배열을 L이라고 한다면, L에 0,1,2를 제외한 숫자가 있으면 n은 예쁜 숫자가 아니다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3176?rev=1670509693&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-08T14:28:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>도로 네트워크</title>
        <link>https://teferi.net/ps/problems/boj/3176?rev=1670509693&amp;do=diff</link>
        <description>도로 네트워크

풀이

	*  트리 경로에서 min과 max 쿼리를 처리해야 한다.
	*  업데이트가 없고, 역원이 없는 쿼리이므로 바이너리 리프팅을 이용해서 처리하는것이 최적이다. 경로 쿼리 참고.
	*  시간 복잡도는 테이블 구축에 O(nlogn), 쿼리 하나를 처리하는데에 O(logn)이므로 총</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3190?rev=1651570590&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T09:36:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>뱀</title>
        <link>https://teferi.net/ps/problems/boj/3190?rev=1651570590&amp;do=diff</link>
        <description>뱀

풀이

	*  시키는대로 구현해주면 되는 문제.
	*  뱀이 차지하고 있는 좌표들를 덱에 저장해서, 뱀이 머리의 위치가 덱의 맨 앞에, 꼬리의 위치가 덱의 맨 뒤에 저장되도록 하면, 뱀의 이동을 덱의 맨 뒤의 원소를 제거하고 맨앞에 이동하는 새 좌표를 추가하는 식으로 O(1)에 처리할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3273?rev=1631810967&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-16T16:49:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>두 수의 합</title>
        <link>https://teferi.net/ps/problems/boj/3273?rev=1631810967&amp;do=diff</link>
        <description>두 수의 합

풀이

	*  정렬해서 투 포인터를 사용해도 되지만, 그냥 해시 테이블에 모든 수와 등장 횟수를 저장하면, 어떤 a_i에 대해서 X-a_i 가 몇개나 존재하는지를 O(1)에 구할 수 있다. 
	*  이렇게 하면, 전체 시간복잡도는 해시테이블 구축에 O(n), 탐색에 O(n), 전체 O(n)이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3344?rev=1638289494&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-30T16:24:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N-Queen</title>
        <link>https://teferi.net/ps/problems/boj/3344?rev=1638289494&amp;do=diff</link>
        <description>N-Queen

풀이

	*  N-queen 배치 문제에서에 아무 솔루션 한개를 찾는 문제.    
		*  n-queen을 계단형으로 배치하는 방법을 그대로 구현하면 O(n)에 솔루션을 찾을 수 있다.
		*  이 문제에서는 특정 N값에 대해서만 묻고 있는데, 이것을 임의의 N으로 확장한 문제는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3358?rev=1689173035&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-12T14:43:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Towers of coins</title>
        <link>https://teferi.net/ps/problems/boj/3358?rev=1689173035&amp;do=diff</link>
        <description>Towers of coins

풀이

	*  DP를 이용해서 푸는 가장 기본적인 게임이론 문제
	*  DP로 구할때의 시간복잡도는 O(n*m) (n:포지션의 갯수, m:행동의 갯수) 가 되는데, 포지션은 1,000,000 개, 가능한 행동은 3가지이므로 충분히 시간내에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3373?rev=1744210881&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-09T15:01:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cards</title>
        <link>https://teferi.net/ps/problems/boj/3373?rev=1744210881&amp;do=diff</link>
        <description>Cards

풀이

	*  각 카드를 +로 쓸지 -로 쓸지, 둘 중의 한가지 값을 결정해줘야 한다. 그런데 +로 써야 하는 카드의 수가 정해져있다.
	*  이것은 흔히 보이는 그리디 유형이다. 각 원소들을 A와 B중 하나로 결정해서 점수 합이 최대가 되도록 하는 문제인데, 각 원소들을 {A로 쓸 때의 점수} - {B로 쓸 때의 점수} 기준으로 정렬해서 상위 N개를 A로 사용하는 것이 최적이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3408?rev=1624028238&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-18T14:57:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Non-boring sequence</title>
        <link>https://teferi.net/ps/problems/boj/3408?rev=1624028238&amp;do=diff</link>
        <description>Non-boring sequence

풀이

	*  먼저 알아둘 테크닉은, i번째 원소의 값이 어떤 구간 [l, r] 안에서 유일하게 존재하는지를 O(1)에 찾는 방법이다.
		*  각 원소 A[i]에 대해서, 같은 값을 갖는 원소중 i보다 앞에 있으면서 가장 큰 인덱스를 갖는 원소를 찾아서 prev라는 배열에 저장해두자. 대충 prev[i] = max(x) where A[x] = A[i] and x &lt; i. 마찬가지로 i보다 뒤에 있으면서 가장 작은 인덱스의 원소도 찾아서 next[i]에 저장해두자. 그러면 A[i] 와 같은 값이 [l,r]에 유일하게 존재하는지는 prev[i]&lt;l &amp;&amp; next[i]&gt;r 과 동치가 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3474?rev=1771483896&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-19T06:51:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>교수가 된 현우</title>
        <link>https://teferi.net/ps/problems/boj/3474?rev=1771483896&amp;do=diff</link>
        <description>교수가 된 현우

풀이

	*  팩토리얼 0의 개수 과 같은 문제. 르장드르 공식 (Legendre's formula)을 이용해서 N!을 소인수분해했을때 5의 지수를 구하면 된다. 시간복잡도는 O(logn)

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3614?rev=1769322774&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-25T06:32:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정사각형</title>
        <link>https://teferi.net/ps/problems/boj/3614?rev=1769322774&amp;do=diff</link>
        <description>정사각형

풀이

	*  변의 길이가 axb인 직사각형의 대각선이 지나는 정사각형의 개수는 a+b-gcd(a,b) 이다 (최대공약수의_활용 참고)
	*  a+b-gcd(a,b) = N 이 되는 (a,b)의 개수를 구하면 된다. 
	*  gcd(a,b) = g 로 놓고, a=gx, b=gy 로 치환하면, gx+gy-g=N이 되고, 정리하면  x+y = N/g + 1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3648?rev=1667835816&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T15:43:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>아이돌</title>
        <link>https://teferi.net/ps/problems/boj/3648?rev=1667835816&amp;do=diff</link>
        <description>아이돌

풀이

	*  기본적인 2-SAT문제. 참가자마다 변수를 만들고, i번 참가자가 탈락이면 x_i=False, 통과면 x_i=True로 모델링 하면, 심사위원들마다 or 절이 한개씩 나온다. 여기까지는 사실상 입력 포맷까지도</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3653?rev=1657248006&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:40:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>영화 수집</title>
        <link>https://teferi.net/ps/problems/boj/3653?rev=1657248006&amp;do=diff</link>
        <description>영화 수집

풀이

	*  구간 합 쿼리를 이용해서 풀 수 있다.
	*  기본 발상은, i번째 위치에 있던 dvd를 맨 앞으로 옮기는 것을, 1번째부터 i-1번째 위치에 있던 dvd의 위치를 뒤로 하나씩 밀고 1번 자리에 그 dvd를 놓는 대신에, 다른 dvd의 위치를 옮기지 않고 그 dvd를 -1번째에 놓는 것으로만 처리해도 상대적 순서는 유지가 된다는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3663?rev=1642436458&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-17T16:20:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>고득점</title>
        <link>https://teferi.net/ps/problems/boj/3663?rev=1642436458&amp;do=diff</link>
        <description>고득점

풀이

	*  조이스틱과 동일한 문제. 풀이는 그쪽을 참조.

코드



boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3665?rev=1632990024&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-30T08:20:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최종 순위</title>
        <link>https://teferi.net/ps/problems/boj/3665?rev=1632990024&amp;do=diff</link>
        <description>최종 순위

풀이

	*  쉽게 떠오르는 것은 위상 정렬 (Topological Sorting)이다. 순위가 높은 쪽에서 순위가 낮은 쪽으로 엣지를 만들고, 위상정렬을 돌려보다가 사이클이 존재한다면 “IMPOSSIBLE”을, 그렇지 않으면 위상정렬 결과를 출력하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3679?rev=1682488662&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-26T05:57:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>단순 다각형</title>
        <link>https://teferi.net/ps/problems/boj/3679?rev=1682488662&amp;do=diff</link>
        <description>단순 다각형

풀이

	*  단순 다각형 만들기 참고. 점들을 각도순으로 정렬한 뒤에, 처음과 마지막 부분의 점들만 각도가 같은 경우 거리를 기준으로 다시 정렬해주면 된다. 시간복잡도는 O(nlogn).

코드



	*  Dependency:</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3745?rev=1657246363&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T02:12:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>오름세</title>
        <link>https://teferi.net/ps/problems/boj/3745?rev=1657246363&amp;do=diff</link>
        <description>오름세

풀이

	*  오름세를 다른 말로 하면 증가하는 부분수열이고, 구해야 하는 것은 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS) 의 길이이다. 이는 이분탐색을 이용해서 O(nlogn)에 구할 수 있다.

코드



boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3747?rev=1667838316&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T16:25:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>완벽한 선거!</title>
        <link>https://teferi.net/ps/problems/boj/3747?rev=1667838316&amp;do=diff</link>
        <description>완벽한 선거!

풀이

	*  기본적인 2-SAT 문제이다. 입력으로 들어오는 두 변수들의 페어를 그대로 or절로 만들고, 절들을 and해서 식을 만들면 끝. 시간복잡도는 O(N+M).
	*  하지만 이 문제는 입력데이터를 처리하는데에 매우 골치가 아프다. 대충 듣기에는 공백으로 구분되는 입력값들이 실제로는 아무 whitespace들로 구분되는것 같다. whitespace 단위로 입력을 받는 cpp는 아무 문제가 없겠지만, line단위로 입력받는 파이썬은 이것때문에 꼬인다. 전체 데이터를 한번에 입력받아서 처리하는 식으로 어찌어찌 구현했다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3754?rev=1690034990&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-22T14:09:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>John</title>
        <link>https://teferi.net/ps/problems/boj/3754?rev=1690034990&amp;do=diff</link>
        <description>John

풀이

	*  같은 색의 초콜렛을 같은 파일에 들어있는 돌이라고 바꿔서 읽으면 그냥 님게임이 된다. 다만 마지막 돌을 가져가면 이기는 노멀 님이 아니라, 마지막 돌을 가져가면 지는 미제르님이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3860?rev=1632403241&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T13:20:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>할로윈 묘지</title>
        <link>https://teferi.net/ps/problems/boj/3860?rev=1632403241&amp;do=diff</link>
        <description>할로윈 묘지

풀이

	*  음수 가중치가 있는 그래프에서 최단경로를 구하는 단순한 문제이다. 단일 출발지 최단 경로 (Single Source Shortest Path)에서 설명한대로 SPFA를 쓰면 된다.
	*  하지만, 비슷한 다른 문제들이 골드인데 반해 이 문제만 플래티넘으로 책정된 것은, 지문 이해의 난이도가 크기 때문이다. 우선 가급적이면 문제를 한글 번역 대신에 영어 원문으로 읽도록 하자. 완벽하진 않지만 애매한 부분을 많이 줄여준다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3964?rev=1774970531&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T15:22:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>팩토리얼과 거듭제곱</title>
        <link>https://teferi.net/ps/problems/boj/3964?rev=1774970531&amp;do=diff</link>
        <description>팩토리얼과 거듭제곱

풀이

	*  n!을 나누는 m의 최대 지수는 르장드르 공식 (Legendre's formula)을 활용해서 쉽게 구할 수 있다
	*  이것을 계산하는 과정에서 m의 소인수분해가 필요한데, 미리 sqrt(m)까지의 소수 목록을 계산해 둔 뒤에, 소수들에 대해서만 나누기를 하는 방식으로 소인수분해를 수행하면, 여러 테스트 케이스에 대해서도 케이스당 O(sqrt(m)/logm) 에 소인수분해가 가능하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/3973?rev=1761811985&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-30T08:13:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Time To Live</title>
        <link>https://teferi.net/ps/problems/boj/3973?rev=1761811985&amp;do=diff</link>
        <description>Time To Live

풀이

	*  트리의 반지름 을 구하는 기본적인 문제. 링크에서 설명하는 알고리즘을 그대로 적용하면 된다. 시간복잡도는 O(n)

코드



	*  Dependency: teflib.tree.DistanceMeasures

boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4148?rev=1689951144&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-21T14:52:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>31게임</title>
        <link>https://teferi.net/ps/problems/boj/4148?rev=1689951144&amp;do=diff</link>
        <description>31게임

풀이

	*  간단한 임파셜 게임. 남은 카드들의 갯수가 포지션이 되므로 총 4^6개의 포지션이 있고, 이는 DP를 이용해서 승패를 구하기에 충분한 크기이다.
	*  각 카드별로 남은 갯수를 길이 6짜리 튜플로 표현하면 간단하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4153?rev=1632870449&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-28T23:07:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>직각삼각형</title>
        <link>https://teferi.net/ps/problems/boj/4153?rev=1632870449&amp;do=diff</link>
        <description>직각삼각형

풀이

	*  그냥 기초 문제.
	*  가장 긴 변의 길이의 제곱이 다른 두 변의 길이의 제곱의 합과 같은지 비교하면 끝.

코드



boj ps:problems:boj:브론즈_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4181?rev=1682487434&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-26T05:37:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Convex Hull</title>
        <link>https://teferi.net/ps/problems/boj/4181?rev=1682487434&amp;do=diff</link>
        <description>Convex Hull

풀이

	*  볼록 껍질 (Convex Hull)을 만드는 알고리즘을 알아야 될 것 같은 제목이지만, 실제로는 이미 볼록껍질을 이루는 점들이 골라져 있기 때문에, 점들을 각도 기준 정렬 만 하면 된다. 
	*  주의할 점은, 문제에서는 내각이 180도가 되는 꼭짓점들도 볼록껍질에 포함되어있다는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4195?rev=1656064917&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-24T10:01:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>친구 네트워크</title>
        <link>https://teferi.net/ps/problems/boj/4195?rev=1656064917&amp;do=diff</link>
        <description>친구 네트워크

풀이

	*  그냥 Disjoint Set 을 이용해서 구현하면 끝나는 간단한 문제.
	*  다만 번거로운 것은 입력값이 문자열 타입이라는 것. teflib의 DisjointSet을 사용하기 위해서는 문자열 형식의 이름들을 [0,n)까지의 자연수로 변환해서 넣어줘야 한다. 변환하는 것은 변환 테이블을</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4230?rev=1667489254&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-03T15:27:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>사랑과 전쟁</title>
        <link>https://teferi.net/ps/problems/boj/4230?rev=1667489254&amp;do=diff</link>
        <description>사랑과 전쟁

풀이

	*  문제 상황이 아주 대환장파티.. 최대 30쌍의 부부가 모였는데 최대 50쌍의 불륜관계가 있다고 한다.. 한명이 여러명과 불륜을 하는 관계가 다수라는 말이고.. 거기에다가 불륜은 이성간 동성간을 가리지 않고 일어난다고 한다..ㄷㄷㄷ 어떻게 보면 PC에 충실한건가..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4256?rev=1641315930&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-04T17:05:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리</title>
        <link>https://teferi.net/ps/problems/boj/4256?rev=1641315930&amp;do=diff</link>
        <description>트리

풀이

	*  트리의 순회과 유사한 문제. 이 문제는 preorder와 inorder로부터 postorder을 찾고, 트리의 순회은 postorder와 inorder로부터 preorder을 찾는다. 풀이의 아이디어는 거의 동일하므로 그쪽을 참고.
	*  구현은 트리의 순회과 살짝 다르게 했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4343?rev=1666081275&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:21:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Arctic Network</title>
        <link>https://teferi.net/ps/problems/boj/4343?rev=1666081275&amp;do=diff</link>
        <description>Arctic Network

풀이

	*  문제 설명이 좀 헷갈린다. 
	*  위성은 경로에 설치하는 것이 아니라, 노드에 설치하는 것이고, 위성이 설치된 노드끼리 통신이 가능하게 되는 것이다.
	*  결국. S개의 위성이 있다는 것은 S개의 컴포넌트를 연결해줄수 있다는 말이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4344?rev=1636983922&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T13:45:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>평균은 넘겠지</title>
        <link>https://teferi.net/ps/problems/boj/4344?rev=1636983922&amp;do=diff</link>
        <description>평균은 넘겠지

풀이

	*  그냥 시키는 대로 계산하면 된다  
	*  총점 -&gt; 평균 -&gt; 평균을 넘는 사람 수 -&gt; 평균을 넘는 사람의 비율 순서로 구하면 끝.

코드



boj ps:problems:boj:브론즈_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4354?rev=1671201633&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T14:40:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문자열 제곱</title>
        <link>https://teferi.net/ps/problems/boj/4354?rev=1671201633&amp;do=diff</link>
        <description>문자열 제곱

풀이

	*  문자열의 반복 패턴을 찾자.
	*  링크에서 설명했듯이, S를 A^n 형태로 표현할 수 있는지 여부와 그때의 가장 짧은 A의 길이는, fail함수를 이용해서 구할수도 있지만, 그냥 builtin str.find 함수를 사용해서 훨씬 빠르게 구할수 있다. 시간복잡도는 kmp와 같은 O(n)이지만, kmp를 구현해서 풀었을때에는 2000ms이상 걸리던 것이 str.find를 이용하면 200ms 이내에 풀린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4355?rev=1675840739&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-08T07:18:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>서로소</title>
        <link>https://teferi.net/ps/problems/boj/4355?rev=1675840739&amp;do=diff</link>
        <description>서로소

풀이

	*  그냥 주어진 n에 대해서 오일러 피 함수를 계산해주기만 하면 되는 문제이다. GCD(n, k) = 1와 거의 동일하다. (GCD(a,b)==1 이라는 것과 a와 b가 서로소라는 것이 동치이니..). 코드도 거의 동일
	*  그러나 딱 한가지 주의할점은, 'n보다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4370?rev=1687324668&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-21T05:17:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>곱셈 게임</title>
        <link>https://teferi.net/ps/problems/boj/4370?rev=1687324668&amp;do=diff</link>
        <description>곱셈 게임

풀이

	*  각 숫자별로 승패 여부를 모두 따로따로 계산할 필요 없이, 숫자의 범위들에 대해서 승패를 계산해주는게 가능하다.
	*  9를 곱해서 n이상으로 만들수 있는 수는 모두 승리포지션이다. w0= ceil(n/9)이라고 하면, [w0, n-1] 범위의 수는 모두 승리포지션.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4373?rev=1652445028&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-13T12:30:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수집합</title>
        <link>https://teferi.net/ps/problems/boj/4373?rev=1652445028&amp;do=diff</link>
        <description>수집합

풀이

	*  네 수의 합이 0이 되는 조합을 찾는 문제의 변형이다.
	*  이런 문제들은, 모든 네 수의 조합에 대해서 합을 구해보는 O(n^4)방식 대신에, 모든 페어들에 대해서 합을 구해서 저장하고, 그것들을 이용해서 네 수의 합이 특정 값이 되는지 찾는 방식으로 시간 복잡도를 O(n^2)으로 줄일수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4386?rev=1666081267&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:21:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>별자리 만들기</title>
        <link>https://teferi.net/ps/problems/boj/4386?rev=1666081267&amp;do=diff</link>
        <description>별자리 만들기

풀이

	*  2차원에서의 유클리디안 최소 신장 트리 (Minimum Spanning Tree / MST) 문제.
	*  유클리디안 MST는 링크에 설명했듯이 (구현은 안해봤지만) O(nlogn)에 풀수 있는 효율적인 알고리즘도 있지만, n이 워낙 작아서 그냥 일반적인 MST 알고리즘을 써도 충분히 빠르다. 심지어는, 이 문제에서는 O(n^2)의 프림 알고리즘보다, O(n^2logn)의 크루스칼 알고리즘이 실제로는 살짝 더 빠르게 돌았다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4414?rev=1774969399&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T15:03:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Factovisors</title>
        <link>https://teferi.net/ps/problems/boj/4414?rev=1774969399&amp;do=diff</link>
        <description>Factovisors

풀이

	*  르장드르 공식 (Legendre's formula)을 활용하면, n!을 나누는 m의 최대 지수를 구할 수 있다. 이 값이 0이면 m이 n!을 나누지 못하는 것이고, 1 이상이면 나눌 수 있는 것.
	*  이것을 계산하는 과정에서 m의 소인수분해가 필요한데, 미리 sqrt(m)까지의 소수 목록을 계산해 둔 뒤에, 소수들에 대해서만 나누기를 하는 방식으로 소인수분해를 수행하면, 여러 테스트 케이스에 대해서도 케이스당 O(sqrt(m)/logm) 에 소인수분해가 가능하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4464?rev=1769951724&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-01T13:15:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Pride and Prejudice and Zombies</title>
        <link>https://teferi.net/ps/problems/boj/4464?rev=1769951724&amp;do=diff</link>
        <description>Pride and Prejudice and Zombies

풀이

	*  다이아급 사전지식(O(n^1/4) 시간복잡도의 소인수분해) + 실버급 활용 문제.
	*  문제 앞부분의 이야기들은 다 필요 없고, 뱀파이어 수가 어떤 수인지 설명하는 부분부터만 읽으면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4485?rev=1663605554&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-19T16:39:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>녹색 옷 입은 애가 젤다지?</title>
        <link>https://teferi.net/ps/problems/boj/4485?rev=1663605554&amp;do=diff</link>
        <description>녹색 옷 입은 애가 젤다지?

풀이

	*  그리드에서 최단 경로를 찾는 문제. 
	*  웨이트가 없는 경우에 그리드를 그래프로 모델링해서 BFS로 최단 경로를 찾는 문제는 너무 흔한 패턴이다. 이 문제는 그리드의 밸류들이 웨이트에 해당되므로, 같은 방식으로 웨이티드 그래프로 모델링해서 다익스트라 알고리즘으로 풀면 끝.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4618?rev=1761892854&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-31T06:40:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Go Go Gorelians</title>
        <link>https://teferi.net/ps/problems/boj/4618?rev=1761892854&amp;do=diff</link>
        <description>Go Go Gorelians

풀이

	*  주어진 조건대로 트리를 구성한 뒤에, 트리의 중심을 구하는 문제. 
	*  트리를 구성하기 위해서, 점을 추가할때마다 이전에 추가된 점들중 가장 가까운 점을 찾는 것은, 점이 전부 1000개 이하이기 때문에 모든 점과의 거리를 모두 계산해보는 나이브한 방식으로도 충분히 돌아간다. 이 과정에서의 시간복잡도는 O(n^2)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4673?rev=1636960845&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T07:20:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>셀프 넘버</title>
        <link>https://teferi.net/ps/problems/boj/4673?rev=1636960845&amp;do=diff</link>
        <description>셀프 넘버

풀이

	*  셀프 넘버에 대해서는 Self number에 이것저것 설명되어 있는데, 이 문제를 푸는데에는 필요없다.
	*  n은 d(n)보다 작기 때문에, 10000이하에서 셀프 넘버가 아닌 수를 모두 찾으려면, 10000 이하의 모든 n에 대해 d(n)을 계산해보면 된다. 이렇게 구한 목록을 제외하고 나면 남은 숫자들은 셀프넘버이므로 그대로 출력하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4792?rev=1634736672&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-20T13:31:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>레드 블루 스패닝 트리</title>
        <link>https://teferi.net/ps/problems/boj/4792?rev=1634736672&amp;do=diff</link>
        <description>레드 블루 스패닝 트리

풀이

	*  기본적인 최소 신장 트리 (Minimum Spanning Tree / MST) 알고리즘만 알면 배경지식은 충분하지만, 발상이 재미있다.
	*  블루 엣지와 레드 엣지의 코스트를 잘 세팅하면, 블루 엣지를 최대로 사용한 MST와 최소로 사용한 MST를 각각 찾을 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/4913?rev=1679322086&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-20T14:21:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>페르마의 크리스마스 정리</title>
        <link>https://teferi.net/ps/problems/boj/4913?rev=1679322086&amp;do=diff</link>
        <description>페르마의 크리스마스 정리

풀이

	*  페르마의 두 제곱수 정리 (=페르마의 크리스마스 정리)를 알아야 풀수 있는 문제인데, 다행히도 문제에 정리의 내용이 주어진다.
	*  따라서 그냥 시키는대로 구현하면 된다. 범위 안의 소수들의 갯수를 세고, 소수들 중에서 4k+1 형태의 소수의 갯수를 세면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5000?rev=1763016012&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T06:40:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>빵 정렬</title>
        <link>https://teferi.net/ps/problems/boj/5000?rev=1763016012&amp;do=diff</link>
        <description>빵 정렬

풀이

	*  인접한 3개 원소를 로테이트 시키는 연산으로는, 순열 패리티가 같은 한, 어떤 순열로도 변환이 가능하다.
		*  스왑 기반 정렬 참고

	*  결국 현재 순서와, 목표 순서의 순열 패리티가 같은지만 확인해보면 된다. 순열 사이클 분할을 이용해서 O(n)에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5012?rev=1622039921&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-26T14:38:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>불만 정렬</title>
        <link>https://teferi.net/ps/problems/boj/5012?rev=1622039921&amp;do=diff</link>
        <description>불만 정렬

풀이

	*  일반적인 2개의 원소로 정의되는 Inversion Counting을 좀 더 확장해서, 3개의 원소로 이루어진 inversion을 찾는 문제이다. BST를 이용해서 inversion을 찾는 방법을 조금 변형해서 적용하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5051?rev=1613662030&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-18T15:27:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피타고라스의 정리</title>
        <link>https://teferi.net/ps/problems/boj/5051?rev=1613662030&amp;do=diff</link>
        <description>피타고라스의 정리

풀이

	*  결국 정리하면 a+b=x인 a,b,x의 갯수를 세는 문제라서, 고속 푸리에 변환 (Fast Fourier Transform, FFT)으로 All possible sums를 계산하는 기본 패턴으로 해결가능 하다. 
	*  (a^2 % n) + (b^2 % n) = (c^2 % n) 이거나 (a^2 % n) + (b^2 % n) = (c^2 % n) + n 인 a,b,c의 갯수를 구하는 문제가 된다. 크기 n짜리 리스트를 만들어서 l[k]에 a^2 % n == k가 되는 a의 갯수를 저장한다. 이거는 1 ~ n-1까지의 모든 a에 대해서 실제로 a^2%n을 구해보면서 갯수를 세면 된다. 이렇게 만든 l을 FFT를 써서 제곱하면 (a^2 % n) + (b^2 % n) = x 인 (a,b)의 갯수를 얻을 수 있다. 그리고 (c^2 % n) = x 인 c의 갯수가 l에 담겨있으므로 이값을 곱해주면 (a^2 % n) + (b^2 % n) = (c^2 % n) …</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5052?rev=1621704154&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-22T17:22:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>전화번호 목록</title>
        <link>https://teferi.net/ps/problems/boj/5052?rev=1621704154&amp;do=diff</link>
        <description>전화번호 목록

풀이

	*  정해는 트라이 (Trie)를 사용하는 것.
	*  트라이에 단어(=전화번호)들을 모두 저장하고, 각 단어의 노드들에 대해서 자식 노드가 있는지를 확인하면, 트라이 구축에 O(nl), 각 단어 노드를 찾고 자식을 확인하는데에 O(nl)로 총 O(nl)에 풀린다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5345?rev=1741354699&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T13:38:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>PLU Count</title>
        <link>https://teferi.net/ps/problems/boj/5345?rev=1741354699&amp;do=diff</link>
        <description>PLU Count

풀이

	*  그냥 구현해도 어렵지 않지만, 정규 표현식을 사용하면 더 간단하게 풀 수 있다.

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5386?rev=1654652370&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-08T01:39:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>금화 게임</title>
        <link>https://teferi.net/ps/problems/boj/5386?rev=1654652370&amp;do=diff</link>
        <description>금화 게임

풀이

	*  한무더기만으로 이루어져 있으므로 그런디수를 정확히 계산할 필요까지는 없다.
	*  K가 홀수인 경우, 1,K, K^2, ...은 모두 홀수이다. 따라서 어떤 액션을 취하든, 남은 금화의 홀짝이 바뀌게 된다. 처음에 금화가 짝수개였다면, 선공이 액션을 취하고 나면 홀수개가 남게되고, 후공이 액션을 취하고 나면 짝수개가 남게 된다. 즉, 0개를 남겨야 이기는 이 게임에서 선공은 절대 이길수 없다. 정리하면 처음 금화가 홀수개면 선공아 승리할 방법이 없고, 짝수개면 선공이 항상 승리한다. 1개만 가져가면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5397?rev=1651566938&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T08:35:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>키로거</title>
        <link>https://teferi.net/ps/problems/boj/5397?rev=1651566938&amp;do=diff</link>
        <description>키로거

풀이

	*  처음 주어진 문자열이 있는 상태에서 시작하느냐 빈 문자열에서 시작하느냐의 차이만 있을뿐, 에디터과 거의 동일한 문제. 풀이는 그쪽을 참고.

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5419?rev=1620232533&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:35:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>북서풍</title>
        <link>https://teferi.net/ps/problems/boj/5419?rev=1620232533&amp;do=diff</link>
        <description>북서풍

풀이

	*  기본적인 Inversion Counting 문제.
	*  좌표의 범위가 크므로 좌표 압축이 필요하다
	*  시간 복잡도는 O(nlogn)..인데 테스트 케이스가 여러개이다.
	*  테스트 케이스의 갯수가 주어지지 않는데 수가 적지는 않은것 같다. n의 범위가 75000이하밖에 안되는데도 Python으로는 시간이 상당히 빡빡하다. 처음에는 Python으로는 포기하고 PyPy로 제출했었는데. 그 뒤에 python3으로 통과한 사람이 생긴 것을 보고서 나도 조금 더 최적화를 하다보니 아슬아슬하게 시간 내에 들어왔다. 좌표 압축하는 루틴을 작성할때 보통은 가독성을 위해서 set을 이용해서 중복값을 제거하거나, itertools.groupby를 써서 중복값을 처리하거나 하는 방식으로 해왔는데, 이번에는 그냥 수작업으로 풀어서 처리했다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5430?rev=1628514989&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-09T13:16:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>AC</title>
        <link>https://teferi.net/ps/problems/boj/5430?rev=1628514989&amp;do=diff</link>
        <description>AC

풀이

	*  그냥 시키는 대로 구현한다고 생각해보자. R명령에 대해서 진짜로 리스트를 다 뒤집으려면 거기에만 O(n)의 시간이 필요하고, 그렇게 하면 시간복잡도는 최대 O(pn)까지도 걸린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5498?rev=1675065582&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-30T07:59:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Batch Scheduling</title>
        <link>https://teferi.net/ps/problems/boj/5498?rev=1675065582&amp;do=diff</link>
        <description>Batch Scheduling

풀이

	*  지문이 영어인데다가 잘 안읽힌다..
	*  배치별로 나누면 같은 배치안에서는 똑같은 O값을 갖게 된다. 따라서 i...j 를 배치로 묶으면 그 배치안의 잡들의 코스트의 합은 그냥 Oi*(Fi+</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5508?rev=1689830928&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-20T05:28:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Party Lamps</title>
        <link>https://teferi.net/ps/problems/boj/5508?rev=1689830928&amp;do=diff</link>
        <description>Party Lamps

풀이

	*  버튼들이 2개단위 또는 3개 단위의 램프들을 바꾸므로, 이 버튼들의 조합으로 만들어지는 전구의 패턴은 6개 단위로 반복되는 패턴이다.
	*  정확히는 '111111', '000000','010101','101010','011011','100100','110001','001110' 의 8가지 패턴이 가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5525?rev=1628515667&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-09T13:27:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>IOIOI</title>
        <link>https://teferi.net/ps/problems/boj/5525?rev=1628515667&amp;do=diff</link>
        <description>IOIOI

풀이

	*  그냥 일반적인 패턴 매칭 알고리즘을 써도 풀수는 있고, 정규표현식으로 매칭시켜도 꽤 빠르게 돌긴 한다.
		*  파이썬에서 re.findall로 모든 정규식 매칭을 찾을때는 중복되는 부분에서는 매칭이 안된다. 따라서 P_N을 찾는게 아니라 I(OI)+ 패턴을 찾아서, 그중에서 길이가 N보다 큰 패턴에 대해서만 카운트를 올려주는 식으로 처리한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5670?rev=1610426416&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-12T04:40:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>휴대폰 자판</title>
        <link>https://teferi.net/ps/problems/boj/5670?rev=1610426416&amp;do=diff</link>
        <description>휴대폰 자판

풀이

	*  트라이 (Trie)를 써서 간단히 풀 수 있는 문제이다. 문제에서 요구하는 것은 각 단어마다 그 단어의 글자들 중 뒤에 오는 글자가 유일하지 않은 글자들의 갯수를 세어서 합하는 것인데, 트라이는 이것을 하기에 최적화된 구조이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5910?rev=1690508947&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-28T01:49:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mountain Climbing</title>
        <link>https://teferi.net/ps/problems/boj/5910?rev=1690508947&amp;do=diff</link>
        <description>Mountain Climbing

풀이

	*  기준이 좀 복잡한 그리디. 무지성 exchange argument로는 해결이 잘 안된다.
	*  그리디 느낌은 오지만 한눈에 보이는 전략은 없으니 우선 무지성으로 exchange argument를 적용해보자. (a_up, a_down), (b_up, b_down)의 두 소가 있을때, a를 먼저 이동시키면 a_up + max(a_down, b_up) + b_down 이 걸리고, b를 먼저 이동시키면 b_up + max(b_down, a_up) + a_down 이 걸리므로, 저것을 비교함수로 해서 정렬하면 될것 같다는 느낌은 받을수 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5942?rev=1632506852&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-24T18:07:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Big Macs Around the World</title>
        <link>https://teferi.net/ps/problems/boj/5942?rev=1632506852&amp;do=diff</link>
        <description>Big Macs Around the World

풀이

	*  가중치 있는 그래프에서 최단 경로를 찾는 문제이기는 한데, 경로의 길이가 엣지를 지날때 가중치만큼 더해지는 것이 아니라 가중치만큼 곱해지는 형태이다.
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/5981?rev=1716995395&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-29T15:09:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cow Checkers</title>
        <link>https://teferi.net/ps/problems/boj/5981?rev=1716995395&amp;do=diff</link>
        <description>Cow Checkers

풀이

	*  출제자가 의도한 풀이가 뭔지는 모르겠다. 이 게임을 모르는 상태에서 그냥 규칙을 유도하는 것은 상당히 어려울거 같고.. 작은 수에 대해서 해보고 패턴을 찾아내는 것도 만만치 않아보이는데.. 그냥 DP로 다 돌려서 계산이 가능한가.?</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6000?rev=1688567965&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-05T14:39:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 게임</title>
        <link>https://teferi.net/ps/problems/boj/6000?rev=1688567965&amp;do=diff</link>
        <description>동전 게임

풀이

	*  돌을 가져가는 갯수의 제한은 피보나치 님과 같은 규칙인데, 돌마다 점수가 부여되고 가져간 돌의 점수를 최대화하는 스코어링 게임이다.
	*  남은 돌의 갯수가 같아도 최대로 가져갈수 있는 돌의 갯수가 다르면 얻을수 있는 점수가 다르다. 따라서 남은돌의 갯수와 최대로 가져갈수 있는 돌의 갯수를 함께 묶은 것을 포지션으로 생각해야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6002?rev=1632408148&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T14:42:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Job Hunt</title>
        <link>https://teferi.net/ps/problems/boj/6002?rev=1632408148&amp;do=diff</link>
        <description>Job Hunt

풀이

	*  음수 가중치가 있는 그래프에서의 최단 경로를 구하는 기본적인 문제. 최대 이익을 구하는 문제이지만, 버는 돈을 -로 쓰는 돈을 +로 바꿔서 그래프를 만들고 최소 코스트를 구한뒤 그 결과값에 다시 -를 붙여주면 끝.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6064?rev=1652324571&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-12T03:02:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카잉 달력</title>
        <link>https://teferi.net/ps/problems/boj/6064?rev=1652324571&amp;do=diff</link>
        <description>카잉 달력

풀이

	*  문제를 바꿔쓰면 M으로 나눈 나머지가 x이고, N으로 나눈 나머지가 y가 되는 가장 작은 자연수를 찾으라는 연립 선형 합동식문제가 된다.
	*  일반적인 연립 선형 합동식의 해법을 적용하면 풀수 있다.
		*  M과 N이 서로소가 아닐수도 있으므로 중국인의 나머지 정리를 그냥 사용할수는 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6087?rev=1663860691&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T15:31:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>레이저 통신</title>
        <link>https://teferi.net/ps/problems/boj/6087?rev=1663860691&amp;do=diff</link>
        <description>레이저 통신

풀이

	*  최단 경로 문제로 모델링하는 간단한 방법은, 현재 좌표와 방향을 묶어서 하나의 노드로 처리하고, 인접한 좌표로 이동하는 비용을, 현재 방향으로 인접한 노드는 0, 현재 방향과 다른 방향의 인접 노드는 1로 잡아주는 것이다. 이렇게 하면 코스트가 0 또는 1이므로</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6156?rev=1631028084&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-07T15:21:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cow Contest</title>
        <link>https://teferi.net/ps/problems/boj/6156?rev=1631028084&amp;do=diff</link>
        <description>Cow Contest

풀이

	*  프로그래머즈의 순위과 동일한 문제 (원 출처는 USACO). 풀이는 그쪽을 참고.
	*  키 순서도 N의 범위만 100에서 500으로 늘어났을 뿐 역시 동일한 문제이다 

코드



boj ps:problems:boj:골드_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6209?rev=1643473710&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-29T16:28:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제자리 멀리뛰기</title>
        <link>https://teferi.net/ps/problems/boj/6209?rev=1643473710&amp;do=diff</link>
        <description>제자리 멀리뛰기

풀이

	*  징검다리과 동일한 문제. 풀이는 그쪽 참고.

코드



	*  Dependency: teflib.binsearch.maximum_valid_integer

boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6219?rev=1658546942&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-23T03:29:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수의 자격</title>
        <link>https://teferi.net/ps/problems/boj/6219?rev=1658546942&amp;do=diff</link>
        <description>소수의 자격

풀이

	*  범위안의 수들 중에서 조건을 만족하는 소수를 찾는 문제.
	*  전체 범위는 크지만, 조건을 만족하는 수들만 빠르게 생성해낼수 있다면, 조건을 만족하는 수들을 먼저 만들고, 그것들에 대해서</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6223?rev=1646411572&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-04T16:32:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cow Sorting</title>
        <link>https://teferi.net/ps/problems/boj/6223?rev=1646411572&amp;do=diff</link>
        <description>Cow Sorting

풀이

	*  추 정렬하기, 아령, 문제제목, Cow Sorting이 모두 동일한 문제이다. 풀이는 추 정렬하기을 참고.

코드



boj ps:problems:boj:플래티넘_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6384?rev=1681711924&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-17T06:12:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Area</title>
        <link>https://teferi.net/ps/problems/boj/6384?rev=1681711924&amp;do=diff</link>
        <description>Area

풀이

	*  문제는 마치 픽의 정리를 이용해서 넓이 구해야 한다는 것처럼 적혀있는데, 그냥 다각형의 넓이 공식으로 넓이를 구하고, 픽의 정리로 격자점의 갯수를 세어주면 끝이다.
	*  원래 teflib.geometry.lattice_point_in_polygon 내부에서 넓이를 이미 계산하기는 하지만, 외부로 그 값을 리턴해주지 않기 때문에,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6458?rev=1741270137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-06T14:08:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Circle Through Three Points</title>
        <link>https://teferi.net/ps/problems/boj/6458?rev=1741270137&amp;do=diff</link>
        <description>Circle Through Three Points

풀이

	*  세 점이 주어졌을때 세 점을 지나는 원의 방정식을 구하는 문제
	*  삼각형의 외접원에서 설명한 방식대로 원의 중심과 반지름을 구하고, 이것을 방정식 형태로 포맷팅해서 출력하면 끝. 포맷팅이 은근 귀찮다;</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6497?rev=1667809164&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T08:19:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>전력난</title>
        <link>https://teferi.net/ps/problems/boj/6497?rev=1667809164&amp;do=diff</link>
        <description>전력난

풀이

	*  불이 켜진 길의 길이가 최소가 되어야 한다. 이것은 최소 신장 트리 (Minimum Spanning Tree / MST) 알고리즘으로 바로 구할수 있다.
	*  문제에서 요구하는 것은 불이 켜진 길의 길이가 아니라, 불이 켜진 길을 제외한 나머지 길의 길이이므로, 전체 길의 길이의 합에서 불이 켜진 길의 길이의 합을 빼주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6515?rev=1620650472&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-10T12:41:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Frequent values</title>
        <link>https://teferi.net/ps/problems/boj/6515?rev=1620650472&amp;do=diff</link>
        <description>Frequent values

풀이

	*  화려한 마을2과 기본적으로는 동일한 문제이다. 풀이는 그쪽을 참고.
	*  차이점은 이 문제에서는 한 입력에 여러개의 테스트 케이스가 들어올 수 있다는 것, 그런데 제한시간은 오히려 더 짧다. 아마도 최적 솔루션 대신 Mo's algorithm을 사용하려 하면 Python에서는 해보지는 않았지만 시간 초과가 날거 같다. (cpp로는 최적화를 잘 하면 여전히 mo's algorithm으로 통과된다는 듯 하다)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6543?rev=1665737174&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-14T08:46:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>그래프의 싱크</title>
        <link>https://teferi.net/ps/problems/boj/6543?rev=1665737174&amp;do=diff</link>
        <description>그래프의 싱크

풀이

	*  문제에서 말하는 '그래프의 싱크'는, 주어진 그래프의 SCC들로부터 condensation graph를 만들었을때 outdegree가 0인 scc들에 포함된 노드들과 동일하다.
	*  condensation graph 를 만든 뒤에, outdegree가 0인 scc를 찾기만 하면 되므로, 시간복잡도는 O(V+E)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6574?rev=1771569048&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-20T06:30:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>새로운 과일</title>
        <link>https://teferi.net/ps/problems/boj/6574?rev=1771569048&amp;do=diff</link>
        <description>새로운 과일

풀이

	*  Shortest common supersequence 문제. LCS를 찾고 나머지 글자들을 순서에 맞게 채워주면 된다. 시간복잡도는 O(nm/w).

코드



	*  Dependency: teflib.string.longest_common_subseq

boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6656?rev=1769044279&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T01:11:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Railway Transportation</title>
        <link>https://teferi.net/ps/problems/boj/6656?rev=1769044279&amp;do=diff</link>
        <description>Railway Transportation

풀이

	*   Passport Control과 동일한 수열을 최소 개수의 증가 부분 수열로 나누기 문제인데, 역추적이 붙어있는 형태이다
	*  각 원소들이 어떤 큐에 들어가는지를 추적하는 것도, 위 링크에서 설명했듯이 이분탐색으로 LDS를 구하는 알고리즘을 활용해서 처리 가능하다. 이것을 구하고 나면, pop연산이 발생하는 큐들의 번호 순서를 출력하는 것은, 그냥 원소들을 정렬한 뒤에 각 원소가 들어가있는 큐의 번호를 순서대로 써주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/6744?rev=1739979615&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-19T15:40:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Parallelogram Counting</title>
        <link>https://teferi.net/ps/problems/boj/6744?rev=1739979615&amp;do=diff</link>
        <description>Parallelogram Counting

풀이

	*  평면 위의 점들 중 4개를 골라서 만들 수 있는 평행사면형의 개수 세기
	*  도형의 개수 세기 / 가장 큰(작은) 도형 찾기 참고. 시간복잡도는 O(n^2)
	*  4개의 점이 같은 직선 위에 있는 경우는 없다는 제한이 있어서, 그 경우에 대한 예외처리를 따로 구현해줄 필요가 없어서 코드는 간단하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7041?rev=1665846338&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-15T15:05:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Dividing the Path</title>
        <link>https://teferi.net/ps/problems/boj/7041?rev=1665846338&amp;do=diff</link>
        <description>Dividing the Path

풀이

	*  핵심이 되는 DP식은 간단한 편인데, 소들의 선호 범위와, 스플링클러의 최소범위~최대범위를 고려하려면 조금씩 복잡해진다..
	*  DP[i]를 [0,i]구간을 모두 스프링클러로 커버하고, 이때 마지막 스프링클러의 범위의 오른쪽 끝이 i가 되게 배치하는 데에 필요한 스프링클러의 최소 갯수라고 하자. 기본적으로는 마지막 스프링클러를 [i-2B, i-2A] 범위에 세우는 경우중에서 최소를 고르면 되기 때문에 $ DP[i] = min_{i-2B \le j \le i-2A}{DP[j]} + 1 $…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7044?rev=1665652172&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-13T09:09:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Bad Cowtractors</title>
        <link>https://teferi.net/ps/problems/boj/7044?rev=1665652172&amp;do=diff</link>
        <description>Bad Cowtractors

풀이

	*  최대 신장 트리를 구하는 문제인데, 이는 엣지의 웨이트에 마이너스를 붙인 다음, 최소 신장 트리 (Minimum Spanning Tree / MST) 알고리즘을 똑같이 적용하면 풀수 있다.
	*  시간 복잡도는 최소 신장 트리 (Minimum Spanning Tree / MST)와 마찬가지인 O(ElogV)이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7045?rev=1665553945&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-12T05:52:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Tree Cutting</title>
        <link>https://teferi.net/ps/problems/boj/7045?rev=1665553945&amp;do=diff</link>
        <description>Tree Cutting

풀이

	*  트리에서 문제에서 주어진 성질을 만족하는 노드가 센트로이드이다.
	*  링크에서 설명한대로 센트로이드를 찾으면 된다. 총 시간복잡도는 O(n).
	*  센트로이드가 존재하지 않는 경우는 없으므로 'NONE'을 출력할 일은 없다. 그 대신, 센트로이드가 2개 존재하는 경우는 처리가 필요하다. 센트로이드 분할을 위해서는 센트로이드가 2개 있어도 아무거나 하나만 찾으면 되지만, 이 문제에서는 두개를 모두 찾아야 한다. 그리고 실수로 빼먹기 쉽지만, 두 센트로이드를 오름차순으로 출력해야 한다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7469?rev=1620051464&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-03T14:17:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>K번째 수</title>
        <link>https://teferi.net/ps/problems/boj/7469?rev=1620051464&amp;do=diff</link>
        <description>K번째 수

풀이

	*  구간 k-th 쿼리 문제.
	*  구간 k-th 쿼리에서 설명했듯 이 문제에 사용가능한 방법이 몇가지 있다. 자세한 설명은 링크를 참조하고, 실제 이 문제에 적용한 결과는 아래와 같았다.
		*  구간압축을 안한 PST : 2164ms  (시간복잡도: O(nlogm + qlogm))</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7490?rev=1644163265&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-06T16:01:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>0 만들기</title>
        <link>https://teferi.net/ps/problems/boj/7490?rev=1644163265&amp;do=diff</link>
        <description>0 만들기

풀이

	*  그냥 모든 조합을 다 시도해서 0이 되는 것들을 찾으면 된다. 
	*  백트래킹으로 어느정도의 가지치기를 해줄수도 있겠지만, 그런것 없이 3^(n-1)가지의 모든 경우를 다 시도해봐도 n이 작아서 돌리는데에 별 무리가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7535?rev=1667835707&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T15:41:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A Bug’s Life</title>
        <link>https://teferi.net/ps/problems/boj/7535?rev=1667835707&amp;do=diff</link>
        <description>A Bug’s Life

풀이

	*  그래프가 이분 그래프인지 확인하면 되는 문제. 시간복잡도는 O(E+V)
	*  라이 블로그에서 2-SAT 연습문제로 이 문제가 주어지는 바람에, 처음에는 레벨이 높게 측정되었다가 시간이 지나면서 제자리를 찾아온것 같다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7568?rev=1633452709&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-05T16:51:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>덩치</title>
        <link>https://teferi.net/ps/problems/boj/7568?rev=1633452709&amp;do=diff</link>
        <description>덩치

풀이

	*  2-tuple의 리스트가 주어졌을때, 각각에 대해서 도미넌트한 튜플의 갯수를 세는 문제. 북서풍와 거의 유사한 문제이고, 관련 풀이는 Inversion Counting을 참고하면 된다.
	*  하지만 북서풍이 플래티넘 난이도인것에 비해 이 문제는 실버인 이유는, n이 최대 50밖에 안돼서, 그냥 O(n^2) 알고리즘으로 돌려도 충분하기 때문. 여기에서는 정해인 O(nlogn) 풀이만 올렸지만, O(n^2) 알골리즘이 코드가 훨씬 간단한것은 당연하고, 실행시간에서조차도 펜윅트리로 구현하는 O(nlogn) 알고리즘 보다도 더 빨리 실행된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7569?rev=1626942750&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-22T08:32:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>토마토</title>
        <link>https://teferi.net/ps/problems/boj/7569?rev=1626942750&amp;do=diff</link>
        <description>토마토

풀이

	*  토마토 문제가 3차원으로 확장된 문제. 동일한 방법으로 BFS를 돌려서 풀면 된다. 해설은 그쪽을 참조.
	*  시간 복잡도는 똑같이 O(셀의 갯수) = O(MNH)

코드



	*  Dependency: teflib.search.min_distances

boj ps:problems:boj:실버_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7570?rev=1642169890&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-14T14:18:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>줄 세우기</title>
        <link>https://teferi.net/ps/problems/boj/7570?rev=1642169890&amp;do=diff</link>
        <description>줄 세우기

풀이

	*  잘 관찰해보면, 연속된 숫자가 오름차순으로 나타나는 서브시퀀스를 찾으면, 나머지 숫자들을 앞이나 뒤로 이동시킴으로써 정렬된 배열을 만들수 있다는 것을 알수 있다. 결국, 연속된 숫자가 오름차순으로 나타나는 서브시퀀스중에서 가장 길이가 긴 것을 찾는 문제가 된다. 전체 길이에서 찾은 서브시퀀스의 길이를 뺀 값이 답이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7576?rev=1626941841&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-22T08:17:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>토마토</title>
        <link>https://teferi.net/ps/problems/boj/7576?rev=1626941841&amp;do=diff</link>
        <description>토마토

풀이

	*  기본적인 BFS문제. 시작점이 여러곳이라는 것은 그냥 처음에 queue에 모든 시작점을 다 넣어놓고 탐색을 시작하면 된다.
	*  토마토는 토마토 상자가 3차원으로 확장된 문제, 하이퍼 토마토는 11차원으로 확장된 문제이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7654?rev=1702475512&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-13T13:51:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Number Game</title>
        <link>https://teferi.net/ps/problems/boj/7654?rev=1702475512&amp;do=diff</link>
        <description>Number Game

풀이

	*  그냥 평범한 21 game 에서도 후공이 이기기는 매우 어렵다. 처음 시작하는 수가 21의 배수일때만, 후공이 (21 - 선공이 부른 수) 를 계속 부르는 전략으로 이길수 있다. 그런데 랜덤으로 전략을 세워서 이길 생각을 하다니..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7662?rev=1656470076&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-29T02:34:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이중 우선순위 큐</title>
        <link>https://teferi.net/ps/problems/boj/7662?rev=1656470076&amp;do=diff</link>
        <description>이중 우선순위 큐

풀이

	*  Double-ended priority queue 를 만드는 문제.
	*  링크에서 설명했듯이 다양한 방법이 있지만, 여기에서는 가장 심플한 방법인 min heap과 max heap을 UpdatableHeap로 만들어서 사용했다.
	*  n번의 삽입 삭제가 일어날때, 각각은 O(logn)에 처리되니 총 시간 복잡도는 O(nlogn).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7685?rev=1657680618&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-13T02:50:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Nim</title>
        <link>https://teferi.net/ps/problems/boj/7685?rev=1657680618&amp;do=diff</link>
        <description>Nim

풀이

	*  님 게임 3와 동일한 문제. 테스트 케이스가 여러개 주어진다는 점만 다르고, 나머지 부분은 동일하다

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7694?rev=1681710171&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-17T05:42:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Triangle</title>
        <link>https://teferi.net/ps/problems/boj/7694?rev=1681710171&amp;do=diff</link>
        <description>Triangle

풀이

	*  픽의 정리를 이용해서 삼각형 내부의 격자점의 갯수를 구하는 문제
	*  Electric Fence에서 삼각형의 밑변이 x축 위에 있어야 된다는 조건만 빠진 버전이다.

코드



	*  Dependency: teflib.geometry.lattice_point_in_polygon

boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7744?rev=1690509069&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-28T01:51:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cakes</title>
        <link>https://teferi.net/ps/problems/boj/7744?rev=1690509069&amp;do=diff</link>
        <description>Cakes

풀이

	*  Mountain Climbing 과 거의 동일한 문제. Mountain Climbing과 다른 점은, 두번째 작업을 진행하는 순서를 첫번쨰 작업을 진행한 순서와 다르게 해도 상관없다는 부분인데, 실제 풀이는 어차피 동일하다.
	*  풀이는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7785?rev=1640957353&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-31T13:29:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사에 있는 사람</title>
        <link>https://teferi.net/ps/problems/boj/7785?rev=1640957353&amp;do=diff</link>
        <description>회사에 있는 사람

풀이

	*  기초적인 해시 연습 문제. 회사에 있는 사람을 set으로 관리하면 O(n)에 해결된다.

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7806?rev=1769416804&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-26T08:40:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>GCD!</title>
        <link>https://teferi.net/ps/problems/boj/7806?rev=1769416804&amp;do=diff</link>
        <description>GCD!

풀이

	*  k를 소인수분해 한 후에, 각 소인수별로 GCD(n!,k) 안에 얼마나 들어있는지를 구한 뒤 곱해주는 방식으로 풀면 된다
	*  p_i가 k 안에 얼마나 들어있는지는 소인수분해 과정에서 얻을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7869?rev=1645088415&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-17T09:00:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>두 원</title>
        <link>https://teferi.net/ps/problems/boj/7869?rev=1645088415&amp;do=diff</link>
        <description>두 원

풀이

	*  그냥 수학문제.
	*  우선 엣지 케이스들부터 따로 처리해주자. 중점사이의 거리 d 가 d≥r1+r2 이어서 겹치는 부분이 0인 경우와, d≤abs(r1-r2)여서 한 원이 다른 원 안에 포함되는 경우이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/7977?rev=1770466986&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-07T12:23:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>크리스 마틴</title>
        <link>https://teferi.net/ps/problems/boj/7977?rev=1770466986&amp;do=diff</link>
        <description>크리스 마틴

풀이

	*  주어진 문자열 S와의 LCS의 길이가 최소가 되는 문자열을 만드는 문제.
	*  일반성을 잃지 않고, S에서 가장 적게 등장하는 알파벳을 ’A’라고 하면, LCS의 길이가 최소가 되는 문자열 T는 'AAA</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8017?rev=1772633421&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T14:10:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Parcel</title>
        <link>https://teferi.net/ps/problems/boj/8017?rev=1772633421&amp;do=diff</link>
        <description>Parcel

풀이

	*  1로만 이루어진 최대 직사각형 을 찾는 문제
	*  O(n)의 '히스토그램에서 가장 큰 직사각형 찾기'를 1행~i행 까지로 만든 누적합 배열에 n번 적용하는 방식으로 O(n^2)에 풀수 있다.

코드



	*  Dependency: teflib.seqtask.max_ranges_for_each_min

boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8055?rev=1702619916&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-15T05:58:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Polygons</title>
        <link>https://teferi.net/ps/problems/boj/8055?rev=1702619916&amp;do=diff</link>
        <description>Polygons

풀이

	*  다각형에서 삼각형들을 지워나가다가, 검정색 삼각형의 세 변중 두 변이 다각형의 변이 되는 순간, 검정색 삼각형을 제거할수 있게 된다.
	*  따라서 두 플레이어는 모두 검정색 삼각형의 두 변이 다각형의 변이 되지 않도록 삼각형을 지워야 한다. 이것이 불가능해지면 지게된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8096?rev=1757599670&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-11T14:07:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Monochromatic Triangles</title>
        <link>https://teferi.net/ps/problems/boj/8096?rev=1757599670&amp;do=diff</link>
        <description>Monochromatic Triangles

풀이

	*  모두 연결되었거나, 모두 연결되어있지 않은 세 노드 세기 참고.
	*   네온 사인,  부족 전쟁 도 동일한 문제이다.
	*  시간복잡도는 O(|E|).

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8170?rev=1717170115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-05-31T15:41:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Pebbles</title>
        <link>https://teferi.net/ps/problems/boj/8170?rev=1717170115&amp;do=diff</link>
        <description>Pebbles

풀이

	*  님게임 변형인데, 비슷한 종류의 변형들이 더러 보인다. 이 문제도 거의 비슷한 문제를 풀었던 것 같은 기억은 있는데.. 뭐였는지가 기억이 안남..
	*  각 파일에서 제거할 수 있는 돌의 개수는, 한칸 왼쪽의 파일과의 돌 개수 차이만큼이다. 그러므로, 인접한 파일들간의 돌의 개수 차이들을 상태로 놓고서 생각하는 것이 편리하다. 상태를 처음 주어진 돌의 개수들 a 대신에 s[i] = a[i] - a[i-1] 로 구한 s로 사용하자. 이런 류의 제약이 있는 문제를 접근하는 요령중 하나다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8187?rev=1769955003&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-01T14:10:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Divine Divisor</title>
        <link>https://teferi.net/ps/problems/boj/8187?rev=1769955003&amp;do=diff</link>
        <description>Divine Divisor

풀이

	*  문제를 풀어서 설명하면, n을 소인수분해했을때 지수가 가장 큰 소인수들의 곱으로 만들어질수 있는 수의 개수를 구하라는 것이다. 가장 큰 지수가 k이고, 지수가 k인 소인수가 m개라면, 답은 pow(2,m)-1 이 된다는 것을 쉽게 알수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8229?rev=1651135245&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-28T08:40:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fibonacci Representation</title>
        <link>https://teferi.net/ps/problems/boj/8229?rev=1651135245&amp;do=diff</link>
        <description>Fibonacci Representation

풀이

	*  그리디하게, 만들려는 수에 가장 근접한 피보나치 수를 찾아서 포함시키는 방식으로 반복하면 찾을 수 있다.
		*  f(n) 이하의 피보나치 수들만을 더해서 만들어진 수가 f(n+1)이상이라면, 이것을 f(n+1)을 포함하는 피보나치수의 합으로 바꿔 쓰는 것이 항상 가능하고, 이 경우에 더해지는 피보나치수의 갯수가 증가하지는 않는다.$F_{n}=\left\lfloor {\frac {\varphi ^{n}}{\sqrt {5}}}+{\frac {1}{2}}\right\rfloor$$n(F)=\left\lceil \log _{\varphi }\left(F\cdot {\sqrt {5}}-{\frac {1}{2}}\right)\right\rceil $…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8314?rev=1771032536&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-14T01:28:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Acyclic Decomposition</title>
        <link>https://teferi.net/ps/problems/boj/8314?rev=1771032536&amp;do=diff</link>
        <description>Acyclic Decomposition

풀이

	*  주어진 그래프가 이미 비순환 그래프라면, 그대로 출력하면 된다.
	*  주어진 그래프에 사이클이 있다면, 간단한 방법으로 두개의 서브셋으로 분할 가능하다
		*  모든 u</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8318?rev=1702477692&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-13T14:28:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Blindfold Nim</title>
        <link>https://teferi.net/ps/problems/boj/8318?rev=1702477692&amp;do=diff</link>
        <description>Blindfold Nim

풀이

	*  우선 스택이 1개만 있을때의 최적 전략이 무엇일지 생각해보자. 이길 확률을 가장 높이는 방법은 1개씩만 가져가는 방법이다. 최대한 자신이 이번턴에 죽지 않을 확률을 높이면서 상대방이 다음턴에 죽기를 기대하는 전략인데.. 대충 직관적인 느낌으로 최적 전략일것 같고, 실제로 작은 n값에 대해서 해보면 이게 최적으로 나온다. 일반화하는 것은 대충 수학적귀납법으로 증명할수 있을것 같긴 한데, 직관적으로 너무 확실해서 안해봐도 될것 같다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8462?rev=1620124995&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T10:43:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배열의 힘</title>
        <link>https://teferi.net/ps/problems/boj/8462?rev=1620124995&amp;do=diff</link>
        <description>배열의 힘

풀이

	*  온라인 쿼리로는 구간에서 저 값을 빠르게 계산하는 방법이 잘 떠오르지 않는다. 
	*  오프라인 쿼리로 처리해서 Mo's algorithm을 사용하려고 생각하자.
	*  어떤 구간에 대해서, 각 숫자의 등장 횟수 Ks와 구하는 값을 저장해두자. 구간을 한 칸 더 늘릴때는, 늘어난 구간의 값이 x라면, 기존 정답에서 Kx*Kx*x 를 빼고 Kx를 1 증가시킨 다음에 다시 Kx*Kx*x 를 더하면 된다. 순서를 좀 바꾸면 정답에 (Kx+1)*(Kx+1)*x - Kx*Kx*x = (2*Kx+1)*x를 더한 뒤 Kx를 1 증가시키는 것. 이것은 O(1)에 해결된다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8817?rev=1690029363&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-22T12:36:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rozgrywka</title>
        <link>https://teferi.net/ps/problems/boj/8817?rev=1690029363&amp;do=diff</link>
        <description>Rozgrywka

풀이

	*  기본적인 배스킨라빈스 게임
	*  배스킨라빈스에서 설명했듯이, N이 K+1의 배수이면 후공의 승리, 나머지는 선공의 승리이다.

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8841?rev=1740313008&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-23T12:16:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Zgadywanka</title>
        <link>https://teferi.net/ps/problems/boj/8841?rev=1740313008&amp;do=diff</link>
        <description>Zgadywanka

풀이

	*  게임이론 태그가 붙어있지만 게임이론과는 관계없다.
	*  기본적으로는 (k+1)분 탐색 아이디어를 쓰면 된다.
	*  n개의 후보가 있을때, 한번 탐색하면 k개의 후보를 체크할수 있고, 체크되지 않은 구간을 (k+1)개로 쪼개게 된다. 후보의 개수는 남은 구간중 가장 큰 구간의 크기가 된다. 즉, 한번 연산 후에는 후보의 개수가 n에서 ceil</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8898?rev=1648456606&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-28T08:36:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스포츠 전문 채널 GSK</title>
        <link>https://teferi.net/ps/problems/boj/8898?rev=1648456606&amp;do=diff</link>
        <description>스포츠 전문 채널 GSK

풀이

	*  i번 경기의 취재를 마치고, j번 경기의 취재를 하는 것이 가능하다면, i≤j 라고 하자. 문제에서 주어진 조건상 이 관계는 추이적이고(i≤j이고 j≤k 이면 i≤k이다), 경기들은 부분 순서 집합을 이룬다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/8907?rev=1757600790&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-11T14:26:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>네온 사인</title>
        <link>https://teferi.net/ps/problems/boj/8907?rev=1757600790&amp;do=diff</link>
        <description>네온 사인

풀이

	*  모두 연결되었거나, 모두 연결되어있지 않은 세 노드 세기 참고.
	*   Monochromatic Triangles,  부족 전쟁 도 동일한 문제이다.
	*  시간복잡도는 O(|E|) = O(|V|^2).

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9012?rev=1739711071&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-16T13:04:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>괄호</title>
        <link>https://teferi.net/ps/problems/boj/9012?rev=1739711071&amp;do=diff</link>
        <description>괄호

풀이

	*  가장 기본적인 올바른 괄호 문자열 (VPS: Valid Parentheses String) 문제.
	*  '('의 개수 - ')'의 개수가 항상 0 이상을 유지하다가 마지막에 0이 되는지를 확인하면 된다. 시간복잡도는 O(|S|)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9019?rev=1629650764&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-22T16:46:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>DSLR</title>
        <link>https://teferi.net/ps/problems/boj/9019?rev=1629650764&amp;do=diff</link>
        <description>DSLR

풀이

	*  BFS로 최단 경로를 찾고, 기본적인 경로추적을 적용해서 경로를 출력하는 문제.
	*  각 숫자가 노드가 되므로 노드는 총 10000개, 한 숫자에서 변환 방법이 4가지이므로 엣지는 4*10000 개. BFS로 풀면 O(40000)수준이므로 별 문제가 되지는 않아야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9024?rev=1632232904&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-21T14:01:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>두 수의 합</title>
        <link>https://teferi.net/ps/problems/boj/9024?rev=1632232904&amp;do=diff</link>
        <description>두 수의 합

풀이

	*  두 용액의 응용. 합이 0에 가까운 두 수를 찾는 대신, K에 가까운 두 수를 찾아야 한다.
	*  두 용액에서 설명한 두가지 방법인 투포인터와 절댓값 기준 정렬을 모두 같은 시간복잡도인 O(nlogn)으로 사용가능하다. 후자의 경우는 정렬 기준을 abs(x)가 아니라 abs(x - K/2)로 잡으면 된다. abs(2*x - K)로 잡으면 나눗셈을 피할수 있어서 좀더 낫다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9078?rev=1763018375&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T07:19:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정렬</title>
        <link>https://teferi.net/ps/problems/boj/9078?rev=1763018375&amp;do=diff</link>
        <description>정렬

풀이

	*  주어진 연산은 같은 크기의 로테이션을 두번 돌리는 것과 동일하다. 한번의 로테이션 연산은 그 크기에 따라서 순열의 패리티가 바뀔수 있지만, 그것을 두번 반복하면 순열의 패리티는 보존된다. 따라서 주어진 순열이 홀순열이면 정렬 불가.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9079?rev=1642778561&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-21T15:22:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 게임</title>
        <link>https://teferi.net/ps/problems/boj/9079?rev=1642778561&amp;do=diff</link>
        <description>동전 게임

풀이

	*  그냥 단순하게 현재 상태에서부터 BFS를 돌려서 모두 앞면인 상태나 모두 뒷면인 상태까지 가는데 필요한 최소 연산 횟수를 찾으면 된다.
	*  상태를 비트마스크로 표현하면, 세개의 동전을 뒤집는 연산은, 1이 세개 포함된 마스크와 xor하는 것으로 간단히 구현할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9084?rev=1694595180&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-09-13T08:53:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전</title>
        <link>https://teferi.net/ps/problems/boj/9084?rev=1694595180&amp;do=diff</link>
        <description>동전

풀이

	*  Coins과 완전히 동일한 문제. 풀이는 그쪽을 참고

코드



boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9184?rev=1643250110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T02:21:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>신나는 함수 실행</title>
        <link>https://teferi.net/ps/problems/boj/9184?rev=1643250110&amp;do=diff</link>
        <description>신나는 함수 실행

풀이

	*  사실상 점화식이 다 주어진 DP 문제.
	*  20*20*20 테이블을 만들어서 바텀업으로 채워나가도 되지만. 문제에 수도코드가 주어진 만큼 그냥 메모이제이션을 써서 탑다운으로 구현했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9326?rev=1691566897&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-09T07:41:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>MI6</title>
        <link>https://teferi.net/ps/problems/boj/9326?rev=1691566897&amp;do=diff</link>
        <description>MI6

풀이

	*  뭘 구하라는 건지 문제를 이해하는데 가장 오래 걸렸다. 처음에는 지문을 봐도 예제를 봐도 도무지 이해가 되지 않았다..
	*  하지만, 문제를 이해하고 나니까 꽤나 깔끔하고 재미있는 아이디어의 문제였다. 다만 이 아이디어를 다른 방식으로 표현할수는 없었을까..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9342?rev=1741356696&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T14:11:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>염색체</title>
        <link>https://teferi.net/ps/problems/boj/9342?rev=1741356696&amp;do=diff</link>
        <description>염색체

풀이

	*  정규 표현식을 이용하면 간단하다. 표현식은 ^[A-F]?A+F+C+[A-F]?$ 이 된다

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9345?rev=1658857302&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-26T17:41:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>디지털 비디오 디스크(DVDs)</title>
        <link>https://teferi.net/ps/problems/boj/9345?rev=1658857302&amp;do=diff</link>
        <description>디지털 비디오 디스크(DVDs)

풀이

	*  n개의 서로 다른 수가 있을 때, 이 수들이 x, x+1, ..., x+n-1 인지를 확인하는 방법은 일일히 정렬해서 비교해볼 필요 없이, 그냥 최댓값이 x+n-1이고 최솟값이 x인지만 확인해보면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9372?rev=1635085670&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-24T14:27:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>상근이의 여행</title>
        <link>https://teferi.net/ps/problems/boj/9372?rev=1635085670&amp;do=diff</link>
        <description>상근이의 여행

풀이

	*  뭔가 이상한 느낌이 들면 정상이다. 사실상 함정문제.
	*  N개의 노드를 전부 연결하려면 최소 N-1개의 엣지가 필요하다. 최소 갯수만 출력하면 되므로, 어떤 엣지가 필요한지는 생각할 필요가 없다. 그냥 입력받은 N값에서 -1만 해서 출력하면 된다. 그래서 계산시간은 케이스당 O(1)이지만.. 다음 테스트케이스로 넘어가려면 M줄의 입력을 받아야 하긴 하므로 입력시간까지 고려하면 O(M)이 된다..…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9373?rev=1666081306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-18T08:21:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>복도 뚫기</title>
        <link>https://teferi.net/ps/problems/boj/9373?rev=1666081306&amp;do=diff</link>
        <description>복도 뚫기

풀이

	*  왼쪽 벽에서 임의의 갯수의 센서들을 거쳐서 오른쪽 벽으로 연결되는 경로를 생각하자. 이것은 왼쪽벽에서 오른쪽벽까지 연결되어 복도의 통행을 막는 장애물벽같은 느낌으로 생각할수 있다. 각 센서의 커버범위가 기둥을 이루고, 커버 못하는 구간 (=센서간 간격)이 통과 가능한 부분이라고 생각하면, 이 장애물벽을 통과하기 위해서는 물체의 지름이 가장 큰 센서간 간격보다는 작아야 한다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9375?rev=1627320317&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-26T17:25:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>패션왕 신해빈</title>
        <link>https://teferi.net/ps/problems/boj/9375?rev=1627320317&amp;do=diff</link>
        <description>패션왕 신해빈

풀이

	*  위장 과 동일한 문제. 설명은 그쪽을 참조. 
		*  문제의 원 출처는 Benelux Algorithm Programming Contest 2013이다


코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9426?rev=1656481985&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-29T05:53:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>중앙값 측정</title>
        <link>https://teferi.net/ps/problems/boj/9426?rev=1656481985&amp;do=diff</link>
        <description>중앙값 측정

풀이

	*  데이터가 삽입, 삭제될때마다 median을 갱신하는 문제
	*  Running Median 방법으로 풀 수 있는 문제이다. 자세한 설명은 링크 참조.
	*  가운데를 말해요와도 비슷하지만, 여기에서는 삽입 외에 삭제 처리도 같이 해주어야 한다는 점이 다르다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9461?rev=1691136687&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-04T08:11:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파도반 수열</title>
        <link>https://teferi.net/ps/problems/boj/9461?rev=1691136687&amp;do=diff</link>
        <description>파도반 수열

풀이

	*  간단한 1차원 DP. 그림을 잘 보면 P(n) = P(n-1) + P(n-6) 의 점화식을 쉽게 발견할수 있다.
	*  선형점화식이므로 n번째 항의 값을 O(logn)에 계산하는 것도 가능하지만, 문제에서 주어지는 n의 범위가 최대 100으로 매우 작고 여러개의 쿼리를 처리해야 하므로, 그냥 P(1)~P(n)을 O(n)에 구해두고 쿼리마다 값을 출력하는 것이 더 낫다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9466?rev=1634659957&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-19T16:12:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>텀 프로젝트</title>
        <link>https://teferi.net/ps/problems/boj/9466?rev=1634659957&amp;do=diff</link>
        <description>텀 프로젝트

풀이

	*  사이클이 생기면 그 사이클이 팀이 된다. 따라서 그냥 사이클들을 모두 찾아주고, 그러면서 사이클들의 길이들을 모두 구해서 더해준 다음에 전체 길이에서 빼면 사이클에 속하지 못한 학생의 수가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9472?rev=1774532553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T13:42:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알고리즘 기말고사</title>
        <link>https://teferi.net/ps/problems/boj/9472?rev=1774532553&amp;do=diff</link>
        <description>알고리즘 기말고사

풀이

	*  전체 경우의 수에서, k문제 중에 1문제 이상이 맞는 경우의 수를 빼주는 방식으로 구할수 있다.
	*  k문제 중에 1문제 이상이 맞는 경우의 수는 포함 배제의 원리 (PIE; Principle of Inclusion-Exclusion) 를 이용해서 구하면 된다. k개중에서 i개가 확실히 맞는 경우의 수를 f(i) 라고 하면 f(i) = C(k,i)*(n-i)! 로 쓸수 있다. 그리고 k문제 중에 1문제 이상이 맞는 경우의 수는 f(1)-f(2)+f(3)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9498?rev=1634315213&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T16:26:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>시험 성적</title>
        <link>https://teferi.net/ps/problems/boj/9498?rev=1634315213&amp;do=diff</link>
        <description>시험 성적

풀이

	*  보통 조건문을 처음 배울 때 풀어보는 기초 문제.

코드



boj ps:problems:boj:브론즈_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9613?rev=1654160889&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T09:08:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>GCD 합</title>
        <link>https://teferi.net/ps/problems/boj/9613?rev=1654160889&amp;do=diff</link>
        <description>GCD 합

풀이

	*  그냥 모든 쌍에 대해서 GCD를 다 구해보는것으로 충분하다.
	*  시간복잡도는 O(n^2*logm)

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9655?rev=1686553137&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-12T06:58:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임</title>
        <link>https://teferi.net/ps/problems/boj/9655?rev=1686553137&amp;do=diff</link>
        <description>돌 게임

풀이

	*  N의 범위가 작으므로 DP를 통해서도 승리조건을 계산할수 있지만, 논리를 이용해서 규칙성을 파악하는 방식이 훨씬 간단하다
		*  돌 게임 5은 똑같은 조건에서 DP를 통해 계산하는 것이 불가능하도록 N의 범위를 키운 버전이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9656?rev=1686553464&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-12T07:04:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 2</title>
        <link>https://teferi.net/ps/problems/boj/9656?rev=1686553464&amp;do=diff</link>
        <description>돌 게임 2

풀이

	*  돌 게임에서 승리조건이 반대로 된 경우이다. 비슷한 방법으로 규칙성을 찾을수 있다.
	*  내 차례가 왔을때 돌의 갯수가 1개이면 패배한다. 따라서 내 차례가 왔을때 돌이 2개나 4개라면, 1개만 남기고 상대방한테 넘겨줄수 있으므로 이길 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9657?rev=1686718892&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-14T05:01:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 3</title>
        <link>https://teferi.net/ps/problems/boj/9657?rev=1686718892&amp;do=diff</link>
        <description>돌 게임 3

풀이

	*  돌 게임 2에서 한번에 4개의 돌을 가져갈 수 있는 방법이 추가되었다.
	*  이 규칙이 추가된 것만으로, 간단한 논리로 승리포지션의 규칙성을 찾는 것이 꽤 까다로워졌다. N의 범위가 작으므로 규칙성을 찾지 못해도, DP를 이용해서 승리 포지션을 계산할수 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9658?rev=1686719063&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-14T05:04:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 4</title>
        <link>https://teferi.net/ps/problems/boj/9658?rev=1686719063&amp;do=diff</link>
        <description>돌 게임 4

풀이

	*  돌 게임 3에서 승리조건과 패배조건만 뒤바뀐 문제.
	*  돌 게임 3과 마찬가지로 N의 범위가 작으므로 DP를 통해서 O(N)에 풀수 있다. dp테이블에서 N=0일때의 값만 바꿔주고 dp를 돌리면 된다.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9659?rev=1686554437&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-12T07:20:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 5</title>
        <link>https://teferi.net/ps/problems/boj/9659?rev=1686554437&amp;do=diff</link>
        <description>돌 게임 5

풀이

	*  돌 게임에서 N의 범위가 늘어난 버전
	*  DP로 푸는 풀이를 막고, 규칙성을 이용해서만 풀리도록 N을 조절했지만, 이미 돌 게임에서도 그렇게 풀었다. 풀이는 그쪽을 참조.

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9660?rev=1686758560&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-14T16:02:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 6</title>
        <link>https://teferi.net/ps/problems/boj/9660?rev=1686758560&amp;do=diff</link>
        <description>돌 게임 6

풀이

	*  돌 게임 3에서 N의 범위만 키운 문제.
	*  돌 게임 3 에서는 게임 규칙으로부터 승리 조건을 도출하는 것이 간단하지 않은 대신에, N의 범위가 작아서 DP를 이용해서 모든 결과를 다 구해보는 방식으로 해결했다. 하지만 이 문제에서는 N이 너무 커서 그러한 방법은 불가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9663?rev=1607489562&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-09T04:52:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N-Queen</title>
        <link>https://teferi.net/ps/problems/boj/9663?rev=1607489562&amp;do=diff</link>
        <description>N-Queen

	*  전형적인 N-queen 문제
	*  최대 입력 사이즈가 15인데, 기본적인 백트래킹 구현만으로는 Python3의 시간제한을 맞추기 어렵다. 대칭을 이용한 속도 향상 테크닉이 들어가야만 통과 가능</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9693?rev=1771483914&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-19T06:51:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>시파르</title>
        <link>https://teferi.net/ps/problems/boj/9693?rev=1771483914&amp;do=diff</link>
        <description>시파르

풀이

	*  팩토리얼 0의 개수 과 같은 문제. 르장드르 공식 (Legendre's formula)을 이용해서 N!을 소인수분해했을때 5의 지수를 구하면 된다. 시간복잡도는 O(logn)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9702?rev=1768116627&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-11T07:30:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>LIS</title>
        <link>https://teferi.net/ps/problems/boj/9702?rev=1768116627&amp;do=diff</link>
        <description>LIS

풀이

	*  우선 A[0]으로 시작하는 부분배열들(=prefix들)의 LIS의 길이의 합을 구하는 것만 생각해보자
	*  모든 i에 대해서 A[i]로 끝나는 LIS의 길이를 미리 구해둔다면, A[..i]의 LIS의 길이는 max({A[..i-1]의 LIS의 길이}, {A[i]로 끝나는 LIS의 길이}) 로 O(1)에 구할수 있고, 모든 prefix들의 LIS의 길이는 O(n)에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/9938?rev=1656405373&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-28T08:36:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>방 청소</title>
        <link>https://teferi.net/ps/problems/boj/9938?rev=1656405373&amp;do=diff</link>
        <description>방 청소

풀이

	*  술병에 대해서 처리해야 하는 오퍼레이션이 복잡해보이는데, 실제로는 술병을 몇번째 서랍에 보관해야 할지를 구할 필요가 없고 보관할지 마실지만 결정하면 된다. 
	*  서랍 Ai와 Bi를 한 그룹으로 묶으면, 그룹안에 빈 자리가 있으면 당연히 보관 가능. 그룹 안에 이미 다른 술병이 들어있을때, 그 술병을 기준으로 한 그룹에 빈 자리가 있으면, 그 술병을 다른 위치로 옮기고 현재 술병을 보관 가능. 바꿔서 말하면, Ai가 포함된 그룹과 Bi가 포함된 그룹을 묶어서 한 그룹으로 묶은 뒤에, 그룹 안에 빈 서랍이 있으면 보관 가능하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10090?rev=1627746703&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T15:51:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Counting Inversions</title>
        <link>https://teferi.net/ps/problems/boj/10090?rev=1627746703&amp;do=diff</link>
        <description>Counting Inversions

풀이

	*  기본적인 Inversion Counting문제. 버블 소트와 거의 동일한 문제이고 동일한 방법으로 풀면 된다. 풀이는 링크를 참조. 시간복잡도는 O(nlogn)
		*  버블 소트 과의 차이점은 n의 범위가 50만에서 100만으로 늘어난 것과, 좌표압축이 필요 없다는 점.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10167?rev=1619795646&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:14:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>금광</title>
        <link>https://teferi.net/ps/problems/boj/10167?rev=1619795646&amp;do=diff</link>
        <description>금광

풀이

	*  '금광세그'라는 테크닉의 어원이 되는 바로 그 문제이다.
		*  세그먼트 트리를 이용해서 최대 부분 합을 구하는 테크닉이다.

	*  아직 저 테크닉이 웰노운이 아닐 시기에 KOI 중등부 문제로 출제되었고, 현장에서 만점을 받은 사람이 아무도 없었다고 한다. 그 이후 '금광세그'라는 이름으로 엄청나게 유명해졌고, 현재 저 테크닉은 한국인들에게 유독 널리 알려진 테크닉으로 평가된다고 한다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10211?rev=1654007060&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T14:24:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Maximum Subarray</title>
        <link>https://teferi.net/ps/problems/boj/10211?rev=1654007060&amp;do=diff</link>
        <description>Maximum Subarray

풀이

	*  최대 부분합 (Maximum subarray problem) 문제. Kadane algorithm을 이용해서 O(n)에 해결 가능하다.

코드



boj ps:problems:boj:골드_3 ps:teflib:linear_homogeneous_recurrence</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10247?rev=1730273264&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-30T07:27:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Reconnaissance</title>
        <link>https://teferi.net/ps/problems/boj/10247?rev=1730273264&amp;do=diff</link>
        <description>Reconnaissance

풀이

	*  여러 개의 점들이 직선을 따라 이동할 때, 가장 멀리 떨어진 두 점 사이의 거리 D가 최소가 될 때를 찾는 문제는 삼분탐색의 대표적인 활용 문제 중 하나이다.
	*  보통 이런 문제에서는 시간에 따른 D의 함수가 유니모달 함수이기 때문에 삼분탐색을 바로 적용해서 풀 수 있다. 이 문제의 경우도 다음의 이유로 유니모달 함수가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10250?rev=1633454051&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-05T17:14:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ACM 호텔</title>
        <link>https://teferi.net/ps/problems/boj/10250?rev=1633454051&amp;do=diff</link>
        <description>ACM 호텔

풀이

	*  단순한 산수 문제. 격자를 아래-&gt;위, 왼쪽-&gt;오른쪽 순서대로 채워나갈때, N번째로 채워지는 칸의 좌표를 찾으면 된다. 
	*  기본적으로는 N을 H로 나눈 몫과 나머지를 이용하면 되지만, 0-based 좌표와 1-based 좌표를 변환하는데에서 약간의 주의가 필요하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10274?rev=1690467457&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-27T14:17:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Equator</title>
        <link>https://teferi.net/ps/problems/boj/10274?rev=1690467457&amp;do=diff</link>
        <description>Equator

풀이

	*  최대 부분합 (Maximum subarray problem)을 구하는 문제. 다만 주어진 배열이 원형으로 되어있기 때문에, 부분구간이 두개로 나뉘어져 왼쪽끝과 오른쪽끝에 붙어있는 경우도 고려해야 한다.
	*  원형 배열에서 부분구간을 찾을때 흔히 쓰는 테크닉은 배열을 두번 이어붙인 다음에 찾는 것이지만, 여기에는 바로 적용할수는 없고, 굳이 쓰려면 좀더 로직을 추가해야 하는데 그것보다 더 간단한 방법이 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10360?rev=1632590661&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-25T17:24:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>The Mountain of Gold?</title>
        <link>https://teferi.net/ps/problems/boj/10360?rev=1632590661&amp;do=diff</link>
        <description>The Mountain of Gold?

풀이

	*  음수 가중치가 있는 그래프에서 시작점을 포함하는 음수 사이클이 존재하는지를 찾는 문제.
	*  벨만포드 알고리즘이나 SPFA를 사용해서 O(VE)에 풀수 있다. 단일 출발지 최단 경로 (Single Source Shortest Path) 참조

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10422?rev=1611243363&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-21T15:36:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>괄호</title>
        <link>https://teferi.net/ps/problems/boj/10422?rev=1611243363&amp;do=diff</link>
        <description>괄호

풀이

	*  올바른 괄호의 갯수는 카탈랑 수 (Catalan number)로 표현되는 대표적인 예제이다.
		*  왜 이게 카탈랑 수가 되는지는, 올바른 괄호의 갯수에 간략히 설명했다

	*  L이 홀수이면, 올바른 괄호가 만들어질 수 없으니 0을 출력하고 L이 짝수이면, L/2번째 카탈랑 수를 출력하면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10531?rev=1620232398&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:33:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Golf Bot</title>
        <link>https://teferi.net/ps/problems/boj/10531?rev=1620232398&amp;do=diff</link>
        <description>Golf Bot

풀이

	*  FFT를 이용해서 All possible sums를 찾는 전형적인 문제. 자세한 내용은 All possible sums 참고.
	*  두번에 갈 수 있는 지가 아니라, 두번 이내에 갈 수 있는 지를 구하는 것이라는 점에.
		*  가장 간단한 처리법은 골프 봇이 칠수 있는 거리에 0도 추가한 뒤, 두번에 갈 수 있는지를 체크하는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10546?rev=1651571022&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-03T09:43:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배부른 마라토너</title>
        <link>https://teferi.net/ps/problems/boj/10546?rev=1651571022&amp;do=diff</link>
        <description>배부른 마라토너

풀이

	*  프로그래머스의 완주하지 못한 선수과 완전히 동일한 문제이다. 풀이는 그쪽 참고.

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10547?rev=1769413486&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-26T07:44:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>STUDENTSKO</title>
        <link>https://teferi.net/ps/problems/boj/10547?rev=1769413486&amp;do=diff</link>
        <description>STUDENTSKO

풀이

	*  가장 강한 K명이 맨 앞에 오고, 그다음 강한 K명이 그 뒤에 오고, .. 이런식으로 정렬되어야 한다. 각각의 K명 그룹 안에서는 순서가 바뀌어도 된다.
	*  그렇다면, 가장 강한 K명에 '1'을 부여하고, 그 다음 K명에 '2'를 부여하고 이런식으로 각 학생들을 그 학생이 들어가야할 그룹의 순위로 치환해서 새로운 수열을 만들면, 이제 그냥 그 수열을 정렬하는 문제가 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10632?rev=1688481532&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-04T14:38:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Unfair Game</title>
        <link>https://teferi.net/ps/problems/boj/10632?rev=1688481532&amp;do=diff</link>
        <description>Unfair Game

풀이

	*  입출력 형식만 약간 바뀌었을뿐, Game of Stones와 동일한 문제이다. 풀이는 그쪽 참고.

코드

(다이아몬드 이상은 코드 비공개)

boj ps:problems:boj:다이아몬드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10651?rev=1624984253&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-29T16:30:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cow Jog</title>
        <link>https://teferi.net/ps/problems/boj/10651?rev=1624984253&amp;do=diff</link>
        <description>Cow Jog

풀이

	*  같은 레인에서는 추월이 생기지 않는다는 것은 처음 순위가 그대로 유지된다는 것이고.. 처음 시점에서의 대소관계와 마지막 시점에서의 대소관계가 동일하다는 뜻이다. i번 소의 처음 포지션과 마지막 포지션을 x_i, y_i라고 두면, 같은 레인 안에 있는 소에 대해서는 x_1&lt;x_2&lt;</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10773?rev=1684233624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-16T10:40:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제로</title>
        <link>https://teferi.net/ps/problems/boj/10773?rev=1684233624&amp;do=diff</link>
        <description>제로

풀이

	*  그냥 시키는 대로 시뮬레이션 하면 되는 문제. 숫자들을 스택을 이용해서 저장하면 된다.
	*  시간복잡도는 O(n)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10775?rev=1642063704&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-13T08:48:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>공항</title>
        <link>https://teferi.net/ps/problems/boj/10775?rev=1642063704&amp;do=diff</link>
        <description>공항

풀이

	*  Disjoint Set을 이용해서 인접한 숫자들을 그룹으로 묶어서 관리하는 테크닉을 사용하는 문제이다. 
	*  동일한 테크닉을 사용하는 거의 비슷한 문제로 호텔 방 배정이 있으니, 테크닉에 대한 설명은 그쪽을 참조.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10806?rev=1678675226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-13T02:40:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>공중도시</title>
        <link>https://teferi.net/ps/problems/boj/10806?rev=1678675226&amp;do=diff</link>
        <description>공중도시

풀이

	*  최소 갯수의 엣지를 추가해서 그래프를 2-edge-connected 로 만드는 방법을 물어보는 문제.
	*  Kingpin Escape를 트리가 아닌 일반 그래프로 확장한 문제이다. 그래프를 처음에 BECC들로 분할해서 bridge tree로 변환하고 나면, 나머지는 동일하게 풀수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10809?rev=1636293204&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-07T13:53:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알파벳 찾기</title>
        <link>https://teferi.net/ps/problems/boj/10809?rev=1636293204&amp;do=diff</link>
        <description>알파벳 찾기

풀이

	*  그냥 단순 구현 문제
	*  실제 코드는 dict에 위치를 저장하고 string.ascii_lowercase로 이터레이트하면서, 뭔가 멋을 부린듯한 코드가 되어버렸는데.. 그냥 길이 26짜리 배열에다가 저장해도 별 상관 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10814?rev=1629680601&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-23T01:03:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나이순 정렬</title>
        <link>https://teferi.net/ps/problems/boj/10814?rev=1629680601&amp;do=diff</link>
        <description>나이순 정렬

풀이

	*  그냥 시키는대로 정렬해서 출력만 하면 되는 문제. 
	*  원래는 stable 하게 소팅하는 것도 요구하는 문제이지만, 파이썬의 내장 sort함수는 이미 stable하기 때문에 별로 신경쓸 필요가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10815?rev=1645169456&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-18T07:30:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자 카드</title>
        <link>https://teferi.net/ps/problems/boj/10815?rev=1645169456&amp;do=diff</link>
        <description>숫자 카드

풀이

	*  수 찾기과 동일한 문제.
	*  문제 분류는 이분탐색이지만, 그냥 set를 써서 풀면 더 간단한 코드로 O(n+m)에 구현가능. 그리고 이분탐색을 안쓴다면 굳이 입력값을 정수로 변환하지 않고, 그냥 문자열로 저장하고 문자열로 검색해도 된다. 이게 좀더 빠르다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10816?rev=1626708789&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-19T15:33:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자 카드 2</title>
        <link>https://teferi.net/ps/problems/boj/10816?rev=1626708789&amp;do=diff</link>
        <description>숫자 카드 2

풀이

	*  숫자 카드와 유사하나, 숫자의 존재 여부 대신, 숫자가 몇개 존재하는지를 찾는다
	*  Collections.Counter를 쓰면 간단하게 구현 가능하다. 시간복잡도는 O(n+m).

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10825?rev=1649500548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-09T10:35:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>국영수</title>
        <link>https://teferi.net/ps/problems/boj/10825?rev=1649500548&amp;do=diff</link>
        <description>국영수

풀이

	*  그냥 시키는 대로 정렬하면 되는 문제.
	*  python에서 여러개의 기준으로 정렬할 경우에는, sort가 stable하다는 점을 이용해서 정렬을 여러번 하는 방법과, 키를 여러개의 기준에 대한 튜플로 만들어주는 방법이 모두 가능하다. 이 경우는 키를 튜플로 만들어서 해결.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10828?rev=1634314783&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T16:19:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스택</title>
        <link>https://teferi.net/ps/problems/boj/10828?rev=1634314783&amp;do=diff</link>
        <description>스택

풀이

	*  '스택'을 이용해서 기본적인 연산들을 수행할 수 있는지 물어보는 기본 문제. 유사품으로 큐, 덱이 있다.
	*  파이썬에서는 그냥 리스트를 쓰면 스택의 연산들을 모두 수행 가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10830?rev=1627488227&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-28T16:03:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬 제곱</title>
        <link>https://teferi.net/ps/problems/boj/10830?rev=1627488227&amp;do=diff</link>
        <description>행렬 제곱

풀이

	*  거듭제곱의 빠른 계산 (Exponentiation by squaring) 을 행렬에 적용하는 문제. 
	*  n*n 행렬의 곱셈은 O(n^3)이고, 빠른 계산 알고리즘을 이용하면 행렬 곱셈을 O(logb)번만 하면 되므로 총 시간 복잡도는 O(n^3logb)
	*  정수의 n제곱을 계산하는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10845?rev=1634314472&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T16:14:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>큐</title>
        <link>https://teferi.net/ps/problems/boj/10845?rev=1634314472&amp;do=diff</link>
        <description>큐

풀이

	*  '큐'를 이용해서 기본적인 연산들을 수행할수 있는지 물어보는 기본 문제. 유사품으로 스택, 덱이 있다.
	*  라이브러리에 있는 큐를 이용해서 주어진 연산들을 처리해주면 끝이다
	*  주어진 연산들은 큐에서 모두 O(1)에 처리되므로 총 시간복잡도는 O(n).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10866?rev=1634314940&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T16:22:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>덱</title>
        <link>https://teferi.net/ps/problems/boj/10866?rev=1634314940&amp;do=diff</link>
        <description>덱

풀이

	*  '덱'을 이용해서 기본적인 연산들을 수행할수 있는지 물어보는 기본 문제. 유사품으로 스택, 큐이 있다.
	*  파이썬에서는 collections.deque를 이용해서 주어진 연산들을 처리해주면 된다
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10868?rev=1634318169&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-15T17:16:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최솟값</title>
        <link>https://teferi.net/ps/problems/boj/10868?rev=1634318169&amp;do=diff</link>
        <description>최솟값

풀이

	*  Range Minimum Query (RMQ) 에서, 데이터 변경이 일어나지 않는 경우에 해당하는 전형적인 문제.
	*  Range Minimum Query (RMQ)에 설명했듯이, 이 문제를 해결할 수 있는 방법은 여러가지가 있는데, 여기에서는 DisjointSet을 이용한 방법으로 구현했다. 이 경우의 시간 복잡도는 O(α(n)*(n+q)).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10942?rev=1625418179&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-04T17:02:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>팰린드롬?</title>
        <link>https://teferi.net/ps/problems/boj/10942?rev=1625418179&amp;do=diff</link>
        <description>팰린드롬?

풀이

	*  S부터 E까지의 부분문자열이 팰린드롬인지 여부를 저장하는 테이블 dp[S][E]는 2차원 DP를 통해서 O(n^2)에 쉽게 구할수 있다. 이 테이블을 이용하면 각각의 쿼리를 O(1)에 처리할 수 있으므로, 이 방법으로는 총 시간복잡도가 O(n^2+m)이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10975?rev=1643032714&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-24T13:58:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>데크 소트 2</title>
        <link>https://teferi.net/ps/problems/boj/10975?rev=1643032714&amp;do=diff</link>
        <description>데크 소트 2

풀이

	*  데크 소트의 쉬운 버전. n의 값이 줄어든 것도 있지만, 중복된 숫자가 없다는 조건때문에 풀이가 매우 쉬워진다.
	*  간단한 풀이는 실제로 데크 소트를 하는 과정을 시뮬레이션해보는 것이다. 먼저 각 숫자들이 정렬되었을때 순서가 몇번째에 오게되는지를 계산해놓는다. 앞에서부터 숫자를 읽으면서, 현재 숫자의 순서와 인접한 순서의 숫자가 들어있는 데크가 있다면 그 데크에 현재 숫자를 붙이고, 그런 데크가 없다면 현재 숫자를 포함한 새 데크를 만든다. 다 끝난 다음에 데크가 몇개나 만들어졌는지 확인하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10978?rev=1774519715&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T10:08:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>기숙사 재배정</title>
        <link>https://teferi.net/ps/problems/boj/10978?rev=1774519715&amp;do=diff</link>
        <description>기숙사 재배정

풀이

	*  기본적인 교란순열 (Derangement) 문제.
	*  D(1),...,D(N)을 미리 O(N)에 구해서 저장해두면 각 쿼리들을 O(1)에 처리하는 것도 가능하지만, N의 범위가 워낙 작아서 그럴 필요조차 없다..

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10986?rev=1668736632&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:57:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나머지 합</title>
        <link>https://teferi.net/ps/problems/boj/10986?rev=1668736632&amp;do=diff</link>
        <description>나머지 합

풀이

	*  구간합 A[i..j] 가 M의 배수가 된다는 것은 A[0..j]를 M으로 나눈 나머지와 A[0..i-1]를 M으로 나눈 나머지가 같다는 뜻이다. 결국 누적합을 구하듯이 A[0..i]%M 을 저장한 배열을 만들고, 거기에서 값이 같은 쌍의 갯수를 찾으면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10989?rev=1630399490&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-31T08:44:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 정렬하기 3</title>
        <link>https://teferi.net/ps/problems/boj/10989?rev=1630399490&amp;do=diff</link>
        <description>수 정렬하기 3

풀이

	*  그냥 입력받고 정렬하고 출력하면 되는 문제이긴 한데.. 카운팅 소트를 써야만 하는 문제이다.
	*  n제한이 백만이었던 수 정렬하기 2에서도 카운팅 소트로 구현한 코드가 살짝 더 빠르게 돌아가는걸 보긴 했었는데, 이문제는 n 제한이 10배로 늘었고.. 그리고 무엇보다도 메모리 제한이 걸려서 모든 수를 다 메모리에 읽어 들이는 것이 불가능하다. 수의 범위가 10000 이하이므로 크기 10000짜리 배열에 각 숫의 등장 횟수를 저장하면 된다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/10999?rev=1620124921&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T10:42:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 구하기 2</title>
        <link>https://teferi.net/ps/problems/boj/10999?rev=1620124921&amp;do=diff</link>
        <description>구간 합 구하기 2

풀이

	*  구간 업데이트와 구간 합 쿼리 를 요구하는 문제이다.
	*  세그먼트 트리의 lazy propagation을 필요로 하는 대표적인 문제이다. 이 경우 구간합과 구간 업데이트를 모두 O(logn)에 해결 가능하다.
	*  그리고, 2개의</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11000?rev=1642866286&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-22T15:44:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>강의실 배정</title>
        <link>https://teferi.net/ps/problems/boj/11000?rev=1642866286&amp;do=diff</link>
        <description>강의실 배정

풀이

	*  그냥 동시에 진행되는 강의가 가장 많은 순간의 강의 갯수가, 필요한 최소한의 강의실 수이다.
	*  각 강의를 [시작시간, 끝시간]의 구간으로 표현하면, 가장 많이 강의가 겹치는 구간을 찾으면 된다. 강의 시작시간과 끝시간을 모두 정렬한뒤, 스위핑하면서 현재 진행중인 강의 갯수를 업데이트 하는 식으로 처리할수 있다. 시간 복잡도는 정렬에 O(nlogn), 스위핑에 O(n), 총 O(nlogn)이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11003?rev=1656773198&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-02T14:46:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최솟값 찾기</title>
        <link>https://teferi.net/ps/problems/boj/11003?rev=1656773198&amp;do=diff</link>
        <description>최솟값 찾기

풀이

	*  monotone queue 테크닉을 활용해서 푸는 기본적인 문제. 설명은 링크를 참조.
	*  총 시간 복잡도는 O(n)

코드



boj ps:problems:boj:골드_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11004?rev=1609694513&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-03T17:21:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>K번째 수</title>
        <link>https://teferi.net/ps/problems/boj/11004?rev=1609694513&amp;do=diff</link>
        <description>K번째 수

풀이

	*  원래 의도대로라면 O(n)의 선택 알고리즘을 사용해서 풀어야 하는 문제.
	*  그러나, 선택 알고리즘 에서 적었듯이, CPython3에서는 대부분의 경우 내장 sort를 이용해서 전체를 정렬하는것이 더 효율적이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11012?rev=1620232469&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:34:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Egg</title>
        <link>https://teferi.net/ps/problems/boj/11012?rev=1620232469&amp;do=diff</link>
        <description>Egg

풀이

	*  2차원 좌표들을 정렬하여 1차원 배열로 만드는 기법을 사용하자.
	*  그렇게 하면, 사각형 영역 안에 들어있는 점의 갯수를 묻는 쿼리가 [l:r]의 구간 내의 원소중에서 [b,t] 사이에 있는 것의 갯수를 묻는 구간쿼리 문제로 쉽게 변환된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11025?rev=1628259536&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-06T14:18:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>요세푸스 문제 3</title>
        <link>https://teferi.net/ps/problems/boj/11025?rev=1628259536&amp;do=diff</link>
        <description>요세푸스 문제 3

풀이

	*  마지막으로 남는 번호를 구하는 요세푸스 문제
	*  요세푸스 문제에서 설명한대로 O(n) 알고리즘과 O(klogn)알고리즘이 존재한다. 여기에서는 k값이 특별히 작지 않기 때문에 O(n) 알고리즘을 적용하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11046?rev=1625417176&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-04T16:46:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>팰린드롬??</title>
        <link>https://teferi.net/ps/problems/boj/11046?rev=1625417176&amp;do=diff</link>
        <description>팰린드롬??

풀이

	*  팰린드롬?에서 N의 크기가 커진 버전. 팰린드롬?에서는 O(n^2) DP로 통과가 가능했지만, 여기에서는 O(n)에 풀어야 한다.
	*  Manacher's algorithm을 사용해서 O(n)에 팰린드롬 반경을 모두 계산해두면, 특정 부분 문자열이 팰린드롬인지 확인하는 것은 O(1)에 가능하다. 따라서 총 시간 복잡도는 O(n+m).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11049?rev=1615437969&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-11T04:46:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬 곱셈 순서</title>
        <link>https://teferi.net/ps/problems/boj/11049?rev=1615437969&amp;do=diff</link>
        <description>행렬 곱셈 순서

풀이

	*  유명한 DP 문제인 행렬 연쇄 곱셈 문제이다.
	*  n&lt;500이라는 제한 조건은 옵티멀한 O(nlogn)풀이 대신에 O(n^3)으로도 통과되도록 의도한 것 같지만, Python으로 시간 안에 통과하려면 마이크로 최적화가 필요하다. 자세한 것은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11050?rev=1611071125&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-19T15:45:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 1</title>
        <link>https://teferi.net/ps/problems/boj/11050?rev=1611071125&amp;do=diff</link>
        <description>이항 계수 1

풀이

	*  n의 범위가 극단적으로 작아서, 어떤 방법을 써도 다 풀린다.
	*  그냥 간단히 math.comb를 사용해서 풀었다.

코드



boj ps:problems:boj:브론즈_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11051?rev=1611071892&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-19T15:58:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 2</title>
        <link>https://teferi.net/ps/problems/boj/11051?rev=1611071892&amp;do=diff</link>
        <description>이항 계수 2

	*  이항 계수 3과 동일하지만 N의 범위가 작다.

풀이

	*  이항 계수 3과 동일하다.
	*  풀이는 이항 계수 참고.
	*  n이 아직은 작아서, 파스칼의 삼각형으로도 풀리고, 그냥 math.comb로 정확한 값을 구해놓고 마지막에 mod만 취해주는 방식으로도 풀린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11052?rev=1640939733&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-31T08:35:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드 구매하기</title>
        <link>https://teferi.net/ps/problems/boj/11052?rev=1640939733&amp;do=diff</link>
        <description>카드 구매하기

풀이

	*  간단한 DP 문제
	*  DP[i]를 카드 i장을 가장 비싸게 구입하는 가격이라고 하면, 점화식은 아래처럼 나온다
		*  $ DP[0] = 0 \\ DP[x] = \max_{0 \leq i &lt; x}{DP[x-i] + P_i} $

	*  점화식대로 DP테이블을 채워나가면서 계산하면 총 시간복잡도는 O(n^2)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11053?rev=1640261185&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:06:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 증가하는 부분 수열</title>
        <link>https://teferi.net/ps/problems/boj/11053?rev=1640261185&amp;do=diff</link>
        <description>가장 긴 증가하는 부분 수열

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)의 기본 문제. 링크에 설명한대로 이분탐색과 세그먼트 트리의 두가지 O(nlogn) 풀이법이 있다.
	*  여기에서는 세그먼트 트리 방법으로 풀었다. A[i]의 범위와 N의 범위가 같아서 굳이 좌표압축도 하지 않았다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11054?rev=1768664166&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-17T15:36:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 바이토닉 부분 수열</title>
        <link>https://teferi.net/ps/problems/boj/11054?rev=1768664166&amp;do=diff</link>
        <description>가장 긴 바이토닉 부분 수열

풀이

	*  바이토닉 부분 수열에서 가장 큰 수를 S[i] 로 고정시킨다면, 가장 긴 바이토닉 부분 수열은, S[i]로 끝나는 LIS와 S[i]로 시작하는 LDS를 합쳐놓은 것이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11055?rev=1640260928&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:02:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 큰 증가 부분 수열</title>
        <link>https://teferi.net/ps/problems/boj/11055?rev=1640260928&amp;do=diff</link>
        <description>가장 큰 증가 부분 수열

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)을 살짝 변형시킨 문제.
	*  그냥 DP나 세그먼트 트리 방법으로 풀때는 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)을 풀때와 거의 유사하게 풀 수 있다. 
	*  하지만, 이분탐색으로 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)을 풀때 썼던 알고리즘은 적용하기가 어렵다. 살짝 변형해서 적용할수 있는 방법을 한참 고민했지만 불가능한것으로 결론내림..…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11066?rev=1615218420&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-08T15:47:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파일 합치기</title>
        <link>https://teferi.net/ps/problems/boj/11066?rev=1615218420&amp;do=diff</link>
        <description>파일 합치기

풀이

	*  최적 이진 검색 트리 문제이다. 자세한 내용은 링크 참조.
	*  링크에서 설명했듯이, O(n^3) 풀이를 의도한 문제이지만, 그렇게 풀어서는 Python으로는 통과가 힘들다. 여기에서는 크누스 최적화를 적용하여 O(n^2)에 풀었다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11085?rev=1634213058&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-14T12:04:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>군사 이동</title>
        <link>https://teferi.net/ps/problems/boj/11085?rev=1634213058&amp;do=diff</link>
        <description>군사 이동

풀이

	*  문제 설명이 살짝 헷갈릴 수 있는데, c에서 v로 가는 경로중에서 가장 좁은 길의 너비가 최대가 되는 경로를 찾으라는 뜻이다
	*  엣지들을 내림차순으로 정렬한 뒤, c와 v가 연결될때까지 하나씩 추가해보다가 연결되는 순간 추가된 엣지를 출력하면 된다. 연결 여부는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11090?rev=1772635507&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T14:45:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Cutting Brownies</title>
        <link>https://teferi.net/ps/problems/boj/11090?rev=1772635507&amp;do=diff</link>
        <description>Cutting Brownies

풀이

	*  Vicky가 선공이라고 생각하자. (Harry가 선공일때도 똑같다)
	*  RxC 크기의 초콜렛을 처음에 Vicky가 RxC1 이랑 RxC2 로 나눈다 (C1&gt;=C2). Harry는 RxC2 초콜렛에서만 이길수 있다면, 승리할수 있다. Harry와 Vicky가 서로 번갈아가면서 RxC2 초콜렛을 잘랐을 때 마지막 턴이 Harry에게 돌아가게 되고, Vicky는 결국 다시 RxC1 초콜렛을 잘라야 하는 상황이 된다. 이것은 처음 RxC를 가지고 있을때보다 Vicky에게 불리해진 상태가 되었다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11164?rev=1743758139&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-04T09:15:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Traveling Cellsperson</title>
        <link>https://teferi.net/ps/problems/boj/11164?rev=1743758139&amp;do=diff</link>
        <description>Traveling Cellsperson

풀이

	*  그리드에서 S의 위치는 답에 영향을 주지 않는다. 그리드의 크기만 중요하다. 
	*  그리드 그래프는 R또는 C가 짝수이면 해밀턴 사이클을 갖는다. 해밀턴 사이클을 따라서 이동한다면, 모든 노드를 방문하고 돌아오는 이동 거리는 노드 개수만큼이 된다. 즉 답은 R*C</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11279?rev=1657244575&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:42:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최대 힙</title>
        <link>https://teferi.net/ps/problems/boj/11279?rev=1657244575&amp;do=diff</link>
        <description>최대 힙

풀이

	*  최소 힙에서 이어지는 문제.
	*  python의 heapq는 최솟값 기준으로만 정렬해주므로, 최댓값을 기준으로 하고 싶을때에는 그냥 -1을 곱해서 넣어주면 된다.
	*  삽입과 삭제의 시간 복잡도는 여전히 O(logn)이므로, 전체 시간 복잡도는 O(nlogn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11280?rev=1667838338&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T16:25:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2-SAT - 3</title>
        <link>https://teferi.net/ps/problems/boj/11280?rev=1667838338&amp;do=diff</link>
        <description>2-SAT - 3

풀이

	*  2-SAT에서 해가 존재여부를 확인하는 기본 문제. 2-sat 알고리즘을 그대로 구현해서 돌리면 된다. 시간복잡도는 O(n+m)

코드



	*  Dependency: teflib.twosat.TwoSat

boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11281?rev=1667838356&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T16:25:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2-SAT - 4</title>
        <link>https://teferi.net/ps/problems/boj/11281?rev=1667838356&amp;do=diff</link>
        <description>2-SAT - 4

풀이

	*  2-SAT - 3 에서, 해의 존재 여부뿐 아니라, 해를 하나 찾아서 출력하는 것이 추가된 문제. 여전히 2-SAT의 기본적인 형태이다. 시간복잡도는 O(n+m)

코드



	*  Dependency: teflib.twosat.TwoSat

boj ps:problems:boj:플래티넘_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11286?rev=1657244597&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:43:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>절댓값 힙</title>
        <link>https://teferi.net/ps/problems/boj/11286?rev=1657244597&amp;do=diff</link>
        <description>절댓값 힙

풀이

	*  최소 힙, 최대 힙 에 이어지는 우선순위 큐 (Priority Queue) 문제. 
	*  이번에는 절댓값을 키값으로 갖는다. 절댓값과 원래값을 튜플로 묶어서 heapq 모듈을 사용하도록 하자. 
	*  삽입과 삭제의 시간 복잡도는 여전히 O(logn)이므로, 전체 시간 복잡도는 O(nlogn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11307?rev=1690031195&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-22T13:06:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>String Game</title>
        <link>https://teferi.net/ps/problems/boj/11307?rev=1690031195&amp;do=diff</link>
        <description>String Game

풀이

	*  번갈아가면서 시퀀스의 양쪽 끝중 한쪽을 골라서 원소를 제거하는 게임이다. 가끔 문제로 등장한다. 예) 19504 
	*  마지막 1개가 남을때까지 원소를 제거해야 하는 규칙이라면, 마지막으로 돌을 제거하는 플레이어는 원할 경우 가장 가운데에 있는 원소가 마지막에 남도록 강제할수 있다. 상대가 맨 앞에서 제거하면 나는 맨 뒤에서 제거하고, 상대가 맨 뒤에서 제거하면 나는 맨 앞에서 제거하는 식으로, 앞에서 제거된 돌 수와 뒤에서 제거된 돌 수를 동일하게 맞춰줄수가 있기 때문이다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11328?rev=1640263093&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:38:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Strfry</title>
        <link>https://teferi.net/ps/problems/boj/11328?rev=1640263093&amp;do=diff</link>
        <description>Strfry

풀이

	*  두 스트링이 같은 글자들을 포함하는지를 비교하면 된다.
	*  쉬운 방법은 각각 스트링을 정렬한 다음에 일치하는지 보는 것이고, 다른 방법은 글자들마다 갯수를 세어서 그것을 비교하는 것이다. 전자는 정렬을 해야 하니 O(nlogn)이 걸리지만 후자는 O(n)으로도 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11385?rev=1617449306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-03T11:28:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>씽크스몰</title>
        <link>https://teferi.net/ps/problems/boj/11385?rev=1617449306&amp;do=diff</link>
        <description>씽크스몰

	*  '씽크스 몰'이 대체 무슨 뜻인지 제목을 이해하는 데 너무 오래 걸렸다. 의도한 것은 '씽크 스몰' 이었던 것 같다..

풀이

	*  고속 푸리에 변환 (Fast Fourier Transform, FFT)의 가장 대표적인 활용인 다항식의 곱셈을 그대로 낸 문제.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11401?rev=1611071916&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-19T15:58:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 3</title>
        <link>https://teferi.net/ps/problems/boj/11401?rev=1611071916&amp;do=diff</link>
        <description>이항 계수 3

	*  이항 계수 2에서 N의 범위가 더 커진 문제.

풀이

	*  이항 계수 2는 파스칼의 삼각형 방법으로도 풀 수 있었지만, 이 문제는 모듈러 나눗셈을 통해서 해결해야 한다.
	*  풀이는 이항 계수 참고

코드



	*  Dependency: teflib.combinatorics.comb

boj ps:problems:boj:골드_1 ps:teflib:comb</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11402?rev=1612113527&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-31T17:18:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 4</title>
        <link>https://teferi.net/ps/problems/boj/11402?rev=1612113527&amp;do=diff</link>
        <description>이항 계수 4

풀이

	*  모듈러스가 n보다 작은 소수일 경우의 이항 계수를 구하는 문제. 뤼카의 정리를 이용해서 푼다.
	*  자세한 풀이는 이항 계수 - 모듈러스가 n보다 작은 소수일 때를 참고.
	*  위의 링크에도 언급되어 있지만, C(n_i, k_i)를 계산하는 함수가, n_i &lt; k_i 인 경우를 처리하는지 주의 할 것.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11404?rev=1710405199&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-14T08:33:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>플로이드</title>
        <link>https://teferi.net/ps/problems/boj/11404?rev=1710405199&amp;do=diff</link>
        <description>플로이드

	*  기본적인 전체쌍 최단 경로 문제 (All-pairs shortest paths; APSP) 문제. 입력으로 들어오는 그래프가 밀집그래프이기 때문에, 문제 제목에서도 알려주듯이 플로이드 알고리즘을 사용해서 푸는 것이 효과적이다. 시간복잡도는 O(V^3)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11414?rev=1654916370&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-11T02:59:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>LCM</title>
        <link>https://teferi.net/ps/problems/boj/11414?rev=1654916370&amp;do=diff</link>
        <description>LCM

풀이

	*  gcd(x,y) = gcd(x-y, x)라는 점을 이용하자. 그러면 gcd(A+n, B+n) = gcd(A-B, B+n)이 되고, 이값은 (A-B)의 약수중 하나이다. 
	*  그러면 A-B의 모든 약수 d대해서 d|B+n, d|A+n 이 되는 n을 찾을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11437?rev=1675953226&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-09T14:33:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>LCA</title>
        <link>https://teferi.net/ps/problems/boj/11437?rev=1675953226&amp;do=diff</link>
        <description>LCA

풀이

	*  최소 공통 조상 (Lowest Common Ancestor / LCA) 쿼리를 처리하는 가장 기본적인 형태의 문제. LCA 2의 쉬운 버전이다. 코드는 그쪽과 동일한 코드를 제출했다.

코드



	*  Dependency: teflib.tree.LowestCommonAncestor

boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11438?rev=1670504626&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-08T13:03:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>LCA 2</title>
        <link>https://teferi.net/ps/problems/boj/11438?rev=1670504626&amp;do=diff</link>
        <description>LCA 2

풀이

	*  최소 공통 조상 (Lowest Common Ancestor / LCA) 쿼리를 처리하는 가장 기본적인 형태의 문제. 풀이는 링크 참고.
	*  LCA 쿼리를 처리하는 다양한 방법이 있지만, 실질적인 수행속도는 HLD기반의 O(n+qlogn) 알고리즘이 가장 빨랐다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11439?rev=1612108748&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-31T15:59:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 5</title>
        <link>https://teferi.net/ps/problems/boj/11439?rev=1612108748&amp;do=diff</link>
        <description>이항 계수 5

풀이

	*  이항 계수 4와 마찬가지로 이항계수를 일반적이지 않은 모듈러스로 나눈 나머지를 구하는 문제이다. 이항 계수 4에서는 모듈러스가 그나마 소수였지만, 이번에는 합성수이다. 
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11440?rev=1676278149&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-13T08:49:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 수의 제곱의 합</title>
        <link>https://teferi.net/ps/problems/boj/11440?rev=1676278149&amp;do=diff</link>
        <description>피보나치 수의 제곱의 합

풀이

	*  제목 그대로 피보나치 수의 제곱의 합을 구하면 된다. 
	*  피보나치 수 (Fibonacci numbers)에서 언급했듯이 F(0)^2+F(1)^2+...+F(n)^2 = F(n)*F(n+1)이 성립한다.
	*  따라서, n번째와 n+1번째 피보나치 수를 구해서 곱한 값을 출력하면 끝. 시간복잡도는 O(logn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11441?rev=1654007093&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T14:24:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>합 구하기</title>
        <link>https://teferi.net/ps/problems/boj/11441?rev=1654007093&amp;do=diff</link>
        <description>합 구하기

풀이

	*  구간 합 구하기 4와 동일한 문제. n과 m의 범위 제한도 100,000으로 같다. 따라서 풀이는 생략

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11444?rev=1711636586&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-28T14:36:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 수 6</title>
        <link>https://teferi.net/ps/problems/boj/11444?rev=1711636586&amp;do=diff</link>
        <description>피보나치 수 6

풀이

	*  피보나치 수 (Fibonacci numbers)를 계산하는 문제. n이 최대 10^18까지 들어오므로 O(n) 풀이로는 불가능. O(logn) 풀이를 사용해서 풀면 된다.
		*  teflib.combinatorics.fibonacci 를 쓰면 된다.


코드



	*  Dependency: teflib.combinatorics.fibonacci

boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11501?rev=1640941276&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-31T09:01:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>주식</title>
        <link>https://teferi.net/ps/problems/boj/11501?rev=1640941276&amp;do=diff</link>
        <description>주식

풀이

	*  가장 큰 이익을 보는 방법은, 매일 주식을 사고, x번째 날에 산 주식을 x번째날 이후에 가장 가격이 비싼 날에 파는 것이다.
	*  하지만, 모든 x에 대해서 x번째날 이후에 가장 가격이 비싼 날을 구하는 것은 비효율적이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11505?rev=1658858322&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-26T17:58:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 곱 구하기</title>
        <link>https://teferi.net/ps/problems/boj/11505?rev=1658858322&amp;do=diff</link>
        <description>구간 곱 구하기

풀이

	*  구간 합 구하기 문제에서 합을 곱(과 모듈러)으로 바꿨을 뿐이지만, 푸는 방법이 조금 차이가 생긴다
	*  세그먼트 트리를 사용한다면, 동일한 방식으로 합만 곱으로 고쳐서 똑같이 모든 쿼리를 O(logn)에 해결가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11548?rev=1656986257&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-05T01:57:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>대칭 차집합</title>
        <link>https://teferi.net/ps/problems/boj/11548?rev=1656986257&amp;do=diff</link>
        <description>대칭 차집합

풀이

	*  한쪽 집합의 원소를 순회하면서 다른 집합에 존재하는지를 체크하는 식으로 구현해도 간단하지만, 그럴 필요도 없이 이미 파이썬 set에는 대칭차집합을 구하는 연산자가 존재한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11652?rev=1649500182&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-09T10:29:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드</title>
        <link>https://teferi.net/ps/problems/boj/11652?rev=1649500182&amp;do=diff</link>
        <description>카드

풀이

	*  그냥 시키는대로 구현하면 되는 문제
	*  collections.Counter를 이용해서 구현하되, most_common() 함수는 안쓰는 것이 구현하기 조금 더 편리.
	*  시간복잡도는 O(n)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11653?rev=1654155203&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T07:33:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소인수분해</title>
        <link>https://teferi.net/ps/problems/boj/11653?rev=1654155203&amp;do=diff</link>
        <description>소인수분해

풀이

	*  말 그대로 소인수분해 (Prime Factorization)를 하는것이 전부인 문제.
	*  n의 범위가 10^7로 크지 않으므로, Trial division으로 충분하다. 시간복잡도는 O(sqrt(n))

코드



	*  Dependency: teflib.numtheory.prime_factorization_small

boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11657?rev=1632408106&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T14:41:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>타임머신</title>
        <link>https://teferi.net/ps/problems/boj/11657?rev=1632408106&amp;do=diff</link>
        <description>타임머신

풀이

	*  그래프에서 최단 경로를 찾는 기본적인 문제. 걸리는 시간이 음수일수도 있으므로, 벨만포드 알고리즘이나 SPFA를 사용해야한다. 단일 출발지 최단 경로 (Single Source Shortest Path)에서 언급한대로 SPFA를 사용해서 풀었다.
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11659?rev=1668736559&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:55:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 구하기 4</title>
        <link>https://teferi.net/ps/problems/boj/11659?rev=1668736559&amp;do=diff</link>
        <description>구간 합 구하기 4

풀이

	*  배열의 업데이트 없이 구간 합 쿼리만 들어오는 유형이다.
	*  누적 합을 O(n)에 만들면, m개의 쿼리를 각각 O(1)에 해결 가능. 총 시간복잡도는 O(n+m)

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11660?rev=1668736650&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:57:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 구하기 5</title>
        <link>https://teferi.net/ps/problems/boj/11660?rev=1668736650&amp;do=diff</link>
        <description>구간 합 구하기 5

풀이

	*  배열의 업데이트 없이 구간 합 쿼리를 처리하는 문제를 이차원으로 확장한 것.
	*  누적 합을 이차원으로 확장해서, p[x][y]가 (0,0)~(x,y)까지의 합을 저장하도록 만들면, 각각의 쿼리를 O(1)에 처리할 수 있다.
	*  이차원 누적합을 만드는 데에는 O(n^2)이, m개의 쿼리는 각각 O(1)에 처리 가능하므로, 총 시간복잡도는 O(n^2+m)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11689?rev=1654158800&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T08:33:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>GCD(n, k) = 1</title>
        <link>https://teferi.net/ps/problems/boj/11689?rev=1654158800&amp;do=diff</link>
        <description>GCD(n, k) = 1

풀이

	*  오일러 피 함수값을 계산하는 문제. 오일러 피 함수 참고.
	*  소인수분해를 이용해서 O(sqrt(n))에 계산 가능하다.

코드



	*  Dependency: teflib.numtheory.prime_factorization_small

boj ps:problems:boj:골드_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11694?rev=1687312883&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-21T02:01:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님 게임</title>
        <link>https://teferi.net/ps/problems/boj/11694?rev=1687312883&amp;do=diff</link>
        <description>님 게임

풀이

	*  스프라그 그런디 정리의 가장 기본이 되는 님 게임이지만, 여기에서는 흔히 주어지는 Normal Nim이 아니라, 마지막 막대를 가져가는 사람이 패배하는 Misère Nim이 주어졌다.
		*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11695?rev=1654654314&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-08T02:11:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>표 게임</title>
        <link>https://teferi.net/ps/problems/boj/11695?rev=1654654314&amp;do=diff</link>
        <description>표 게임

풀이

	*  조금만 관찰을 해보면.. 행을 선택한 후 수를 감소시킬때는 지켜야할 조건이 없고 그냥 다 합쳐서 1 이상만 줄이면 되니까.. 그냥 열 구분 없이 총합만 적어놓고 숫자를 감소시키는 것과 다를바가 없다. 그냥 행 갯수만큼의 무더기가 있는 일반 님게임과 완전히 동일하다. (대체 왜 이렇게 바보같은 게임을 하고 있는거지..)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11720?rev=1633704221&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-08T14:43:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숫자의 합</title>
        <link>https://teferi.net/ps/problems/boj/11720?rev=1633704221&amp;do=diff</link>
        <description>숫자의 합

풀이

	*  그냥 시키는대로 하면 되는 기초 문제. 딱히 설명할게 없다..

코드



boj ps:problems:boj:브론즈_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11722?rev=1624984789&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-29T16:39:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 감소하는 부분 수열</title>
        <link>https://teferi.net/ps/problems/boj/11722?rev=1624984789&amp;do=diff</link>
        <description>가장 긴 감소하는 부분 수열

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)을 구하는 알고리즘에서 부등호 방향만 바꿔주면 된다.
	*  그러나 bisect 모듈에서는 커스텀 비교함수를 따로 받지 않기 때문에, 이 경우에는 그냥 값들에 -를 붙여서 넘기는 것으로 처리했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11725?rev=1606491471&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-11-27T15:37:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리의 부모 찾기</title>
        <link>https://teferi.net/ps/problems/boj/11725?rev=1606491471&amp;do=diff</link>
        <description>트리의 부모 찾기

풀이

	*  1번 노드에서부터 전체 트리를 탐색하면서 방문하는 노드들에 대해 이전 노드를 부모 노드로 마킹하면 끝.
	*  DFS/BFS 어느 것을 사용해도 상관 없다. 내 경우는 DFS를 사용.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11726?rev=1627749035&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T16:30:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2×n 타일링</title>
        <link>https://teferi.net/ps/problems/boj/11726?rev=1627749035&amp;do=diff</link>
        <description>2×n 타일링

풀이

	*  기초적인 DP문제. 그래서 변형 문제도 많다.
		*  2×2 타일을 추가하면 2×n 타일링 2 이 된다.
		*  여기에서 채워야 하는 칸을 3xn으로 바꾸면 타일 채우기 이 된다.
		*  이 문제 자체는 프로그래머즈의</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11727?rev=1627749140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T16:32:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2×n 타일링 2</title>
        <link>https://teferi.net/ps/problems/boj/11727?rev=1627749140&amp;do=diff</link>
        <description>2×n 타일링 2

풀이

	*  2×n 타일링의 변형. 2×2 블럭이 추가되었다.
	*  이제 2xn크기를 채우는 방법은 아래의 세가지 경우로 나뉜다
		*  2x(n-1) 을 채우고 2×1 블럭을 마지막에 붙이는 방법
		*  2x(n-2) 을 채우고</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11728?rev=1631807141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-16T15:45:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배열 합치기</title>
        <link>https://teferi.net/ps/problems/boj/11728?rev=1631807141&amp;do=diff</link>
        <description>배열 합치기

풀이

	*  두 정렬된 배열을 머지하라는 문제이다. 머지소트를 할때 반복적으로 수행하는 그 머지이다.
	*  O(N+M)에 머지를 하는 정석적인 방법은 두 배열에서 각각 다음 숫자를 가리키는 포인터를 만들고, 숫자 두개를 비교해서 작은쪽을 결과에 추가하고 포인터를 증가시키는 방법이다. 이것도 일종의</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11757?rev=1689256208&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-13T13:50:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Min-Max Distance Game</title>
        <link>https://teferi.net/ps/problems/boj/11757?rev=1689256208&amp;do=diff</link>
        <description>Min-Max Distance Game

풀이

	*  자력솔 루비라고 주장할수도 있었는데, 무심코 본 '이분탐색' 태그가 너무 크리티컬한 힌트였기에 완전 자력솔이라고 주장은 못하겠다..
	*  얼핏보기에는 알려진 풀이랑 내 풀이가 상당히 다른데, 우선 내 풀이를 설명한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11778?rev=1651138610&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-28T09:36:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 수와 최대공약수</title>
        <link>https://teferi.net/ps/problems/boj/11778?rev=1651138610&amp;do=diff</link>
        <description>피보나치 수와 최대공약수

풀이

	*  두가지만 알고 있으면 된다.
		*  피보나치 수의 최대공약수에 관한 수식 gcd(f[i],f[j]) = f[gcd(i,j)] 
		*  n번째 피보나치 수 (Fibonacci numbers)를 O(logn)에 구하는 방법

	*  이제 그대로 구현하면 된다.  n과 m의 최대공약수 p를 구하고, p번째 피보나치수를 구한다. 둘다 O(logn)에 처리된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11866?rev=1628516986&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-09T13:49:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>요세푸스 문제 0</title>
        <link>https://teferi.net/ps/problems/boj/11866?rev=1628516986&amp;do=diff</link>
        <description>요세푸스 문제 0

풀이

	*  요세푸스 문제 에서 N의 범위를 더 줄인 문제. 그런데 이미 요세푸스 문제 조차도 O(n^2)의 느린 알고리즘으로도 풀리기 때문에 N을 더 줄인 문제를 추가한 의도는 잘 모르겠다. 
		*  solved.ac의 난이도는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11868?rev=1653631539&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-27T06:05:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님 게임 2</title>
        <link>https://teferi.net/ps/problems/boj/11868?rev=1653631539&amp;do=diff</link>
        <description>님 게임 2

풀이

	*  Normal nim 게임이다. 
	*  스프라그-그런디 정리를 설명할때 기본적으로 등장하는 예시로, 돌이 x개 남은 무더기의 그런디수는 x가 되므로. 전체 그런디수는 모든 p[i]를 xor한 값이 된다.
	*  시간복잡도는 O(n).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11869?rev=1653631282&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-27T06:01:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님블</title>
        <link>https://teferi.net/ps/problems/boj/11869?rev=1653631282&amp;do=diff</link>
        <description>님블

풀이

	*  말을 조금 다르게 써놨지만, 사실상 normal nim 게임과 동일한 규칙이다. 즉, 님 게임 2와 똑같은 문제. 코드도 동일하다.

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11871?rev=1653631068&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-27T05:57:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님 게임 홀짝</title>
        <link>https://teferi.net/ps/problems/boj/11871?rev=1653631068&amp;do=diff</link>
        <description>님 게임 홀짝

풀이

	*  님 게임을 살짝 변형한 문제. 여전히 스프라그-그런디 정리의 기본 유형이다.
	*  한 무더기에서 돌의 갯수에 따른 그런디 수는 돌의 갯수가 홀수인지 짝수인지에 따라 달라진다. g(0)=0이고, x=2n+1 일때는 g(x)=n+1이 되고, x=2n일때는 g(x)=n-1 이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11872?rev=1653754248&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-28T16:10:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님 게임 나누기</title>
        <link>https://teferi.net/ps/problems/boj/11872?rev=1653754248&amp;do=diff</link>
        <description>님 게임 나누기

풀이

	*  님 게임의 변형. 스프라그-그런디 정리를 이용해서 푼다.
	*  한개의 무더기에서 돌의 갯수에 따른 그런디 수를 구하는 것이 조금 복잡하다. 두 무더기로 나눴을때의 그런디수는, 두개의 그런디수를 xor한 값으로 계산할수 있고, 이렇게 두 무더기로 나누는 행동까지 포함한 그런디 수를 손으로 구해보면 1,2,4,3,5,6,8,7,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11873?rev=1772633683&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T14:14:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최대 직사각형</title>
        <link>https://teferi.net/ps/problems/boj/11873?rev=1772633683&amp;do=diff</link>
        <description>최대 직사각형

풀이

	*  1로만 이루어진 최대 직사각형 을 찾는 문제.  Parcel과도 동일한 문제.
	*  O(m)의 '히스토그램에서 가장 큰 직사각형 찾기'를 1행~i행 까지로 만든 누적합 배열에 n번 적용하는 방식으로 O(n*m)에 풀수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11899?rev=1739712932&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-16T13:35:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>괄호 끼워넣기</title>
        <link>https://teferi.net/ps/problems/boj/11899?rev=1739712932&amp;do=diff</link>
        <description>괄호 끼워넣기

풀이

	*  올바른 괄호 문자열 (VPS: Valid Parentheses String)의 응용.
	*  우선 score(최종점수)와 min_score(최소점수)를 구한다. 
	*  만약 min_score &lt; 0 이면 올바른 괄호 문자열이 될수 없기 때문에, 0이상이 되게 하기 위해서 맨 앞에 -min_score 만큼의 '('를 추가해야 한다. 이렇게 되면 score 역시 -min_score 만큼 증가한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11931?rev=1630398917&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-31T08:35:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 정렬하기 4</title>
        <link>https://teferi.net/ps/problems/boj/11931?rev=1630398917&amp;do=diff</link>
        <description>수 정렬하기 4

풀이

	*  수 정렬하기 2에서 정렬 순서만 바뀐 문제. 똑같이 O(nlogn)의 내장 소팅 함수를 이용해서 구현하면 끝.

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11969?rev=1654007074&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T14:24:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Breed Counting</title>
        <link>https://teferi.net/ps/problems/boj/11969?rev=1654007074&amp;do=diff</link>
        <description>Breed Counting

풀이

	*  소의 마리수의 누적합 배열을 3종류의 id에 대해 각각 만들어주면 된다. 쿼리가 주어지면, 각 누적합 배열에서 부분합을 각각 계산해주면 된다.
	*  누적합 배열을 만드는데 O(n), q개의 쿼리를 각각 O(1)로 처리하는 데에 O(q). 총 O(n+q).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/11997?rev=1654010800&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T15:26:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Load Balancing (Silver)</title>
        <link>https://teferi.net/ps/problems/boj/11997?rev=1654010800&amp;do=diff</link>
        <description>Load Balancing (Silver)

풀이

	*  11990의 쉬운 버전.
	*  N의 범위가 1000이하이므로, 모든 가능한 x좌표와 y좌표에 대해서 그점을 중심으로 가로펜스와 세로펜스를 그었을때의 M값을 계산해보고, 그중에서 최소 M값을 찾는 O(N^2) 알고리즘으로도 통과된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12015?rev=1657245010&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:50:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 증가하는 부분 수열 2</title>
        <link>https://teferi.net/ps/problems/boj/12015?rev=1657245010&amp;do=diff</link>
        <description>가장 긴 증가하는 부분 수열 2

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)문제의 기본 문제. 링크에 설명된대로, 이진탐색 방법과 세그먼트 트리 방법의 두가지의 O(nlogn) 알고리즘이 있다.
	*  여기에서는 이진탐색 방법으로 풀었다. 세그먼트 트리 방법의 풀이는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12018?rev=1769691609&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T13:00:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Yonsei TOTO</title>
        <link>https://teferi.net/ps/problems/boj/12018?rev=1769691609&amp;do=diff</link>
        <description>Yonsei TOTO

풀이

	*  수강하기 위해서 적은 마일리지가 필요한 과목부터 신청하면 된다
	*  각 과목의 필요한 마일리지는, 다른 사람들이 신청한 마일리지들중 L번째로 큰 값이다 (L=수강인원). 그러면 딱 L등으로 수강이 가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12107?rev=1686554869&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-12T07:27:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>약수 지우기 게임 1</title>
        <link>https://teferi.net/ps/problems/boj/12107?rev=1686554869&amp;do=diff</link>
        <description>약수 지우기 게임 1

풀이

	*  2~N의 카드를 갖고 시작하는 게임이 있다고 하자 (이름은 2~N게임이라고 부르자), 이 게임은 실질적으로 선공이 2~N게임을 선공과 후공중에서 골라서 플레이할수 있는 선택권이 주어지는 게임이다. 2~N게임에서 선공에게 필승법이 있으면 선공을 택하고 후공에게 필승법이 있다면 후공을 택하면 되므로, 결과적으로는 항상 선공이 승리할수 있다. (N=1일때만 예외이다)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12108?rev=1689323246&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-14T08:27:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>약수 지우기 게임 2</title>
        <link>https://teferi.net/ps/problems/boj/12108?rev=1689323246&amp;do=diff</link>
        <description>약수 지우기 게임 2

풀이

	*  DP를 이용해서 각각의 포지션에 대한 승패여부를 모두 구해줘야 한다
	*  하지만 남아있는 자연수의 집합이 포지션에 대응되므로, 포지션의 갯수가 모두 2^n 개가 된다. 한 포지션에서 취할수 있는 행동은 n가지이므로 시간복잡도는 O(n*2^n)이 되는데 n이 최대 30이라서 이 방법을 그대로 사용하기에는 무리가 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12354?rev=1770559334&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-08T14:02:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Ocean View (Small)</title>
        <link>https://teferi.net/ps/problems/boj/12354?rev=1770559334&amp;do=diff</link>
        <description>Ocean View (Small)

풀이

	*  남은 집들이 오름차순으로 정렬된 상태가 되면, 모든 집들이 오션뷰를 볼수 있다.
	*  오름차순으로 정렬된 가장 많은 집의 개수는, 가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)의 길이를 구하면 된다. 부숴야 하는 집의 개수는, 전체 개수에서 남길 집의 개수를 빼주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12355?rev=1770558937&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-08T13:55:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Ocean View (Large)</title>
        <link>https://teferi.net/ps/problems/boj/12355?rev=1770558937&amp;do=diff</link>
        <description>Ocean View (Large)

풀이

	*  Ocean View (Small)의 라지 버전. 풀이 및 코드는 동일하다. 
		*  라지버전임에도 불구, 가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)를 O(n^2)으로 구하더라도 충분히 통과한다


코드



	*  Dependency: teflib.seqtask.longest_inc_subseq_length

boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12727?rev=1643782703&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-02T06:18:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Numbers (Small)</title>
        <link>https://teferi.net/ps/problems/boj/12727?rev=1643782703&amp;do=diff</link>
        <description>Numbers (Small)

풀이

	*  Numbers에서 n의 범위를 줄인 버전. 이 범위까지는 높은 정밀도의 실수 라이브러리를 이용해서 그냥 답을 구하거나, 계산기로 n≤30 까지의 답을 계산해서 코드에 답을 하드코딩해두거나 하는 방법으로도 풀리긴는 한다. 정해는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12728?rev=1643782824&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-02T06:20:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>n제곱 계산</title>
        <link>https://teferi.net/ps/problems/boj/12728?rev=1643782824&amp;do=diff</link>
        <description>n제곱 계산

풀이

	*  Numbers와 동일한 문제. 풀이는 그쪽 참고

코드



	*  Dependency: teflib.combinatorics.linear_homogeneous_recurrence

boj ps:problems:boj:플래티넘_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12738?rev=1623771804&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-15T15:43:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 증가하는 부분 수열 3</title>
        <link>https://teferi.net/ps/problems/boj/12738?rev=1623771804&amp;do=diff</link>
        <description>가장 긴 증가하는 부분 수열 3

풀이

	*  기본적인 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS) 문제. 
	*  가장 긴 증가하는 부분 수열 2문제와는 n의 범위도 똑같고 a_i의 범위만 다르다. 세그먼트 트리 방법으로 풀때에는 좌표 압축의 필요 여부가 달라지지만, 이진탐색 방법으로 풀때에는 달라질 것이 전혀 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12784?rev=1636131793&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-05T17:03:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>인하니카 공화국</title>
        <link>https://teferi.net/ps/problems/boj/12784?rev=1636131793&amp;do=diff</link>
        <description>인하니카 공화국

풀이

	*  트리 DP 문제
	*  어떤 서브트리의 DP값을, 자신의 parent에서 모든 리프노드를 끊는데 필요한 최소 비용이라고 하면, 이 값은 min({자신과 parent사이의 엣지를 끊는 비용}, {자신과 모든 차일드들간의 엣지를 끊는 비용}) 으로 구할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12833?rev=1620230541&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:02:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>XORXORXOR</title>
        <link>https://teferi.net/ps/problems/boj/12833?rev=1620230541&amp;do=diff</link>
        <description>XORXORXOR

풀이

	*  Calculate!와 동일한 문제이다
	*  그냥 xor 연산을 알고 있느냐를 묻는 문제이다. 어떤 수에 같은 수를 두번 xor하면 원래 수가 된다. 즉, 짝수번 xor하면 원래 수가 되고, 홀수번 xor하면 한번 xor한 것과 동일하다. 이것만 알면 O(1)에 계산가능.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12837?rev=1657245453&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-08T01:57:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가계부 (Hard)</title>
        <link>https://teferi.net/ps/problems/boj/12837?rev=1657245453&amp;do=diff</link>
        <description>가계부 (Hard)

풀이

	*  그냥 전형적인 구간합 쿼리 + 포인트 업데이트 쿼리 문제. 펜윅트리를 이용해서 풀면 된다
	*  트리를 만드는데에 O(n), 각 쿼리를 처리하는 데에 O(logn), 그래서 전체 O(n + mlogn)에 해결 가능하다.

코드



	*  Dependency:</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12843?rev=1647426712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-16T10:31:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>복수전공</title>
        <link>https://teferi.net/ps/problems/boj/12843?rev=1647426712&amp;do=diff</link>
        <description>복수전공

풀이

	*  강의를 노드로, 겹치는 관계를 엣지로 연결해주자. 다른 학부의 강의들 사이에서만 엣지가 존재하기 때문에 이분 그래프가 된다.
	*  겹치지 않는 강의들을 최대한 많이 고르는 것은 최대 독립집합을 구하는 문제가 되고, 전체 노드 갯수에서 최소 버텍스 커버의 크기를 빼주면 최대 독립집합의 크기를 구할수 있다. 이분그래프이기 때문에</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12844?rev=1622042744&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-26T15:25:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>XOR</title>
        <link>https://teferi.net/ps/problems/boj/12844?rev=1622042744&amp;do=diff</link>
        <description>XOR

풀이

	*  구간 업데이트 + 구간 쿼리 문제의 구간 xor 쿼리 버전 문제
		*  XOR과 제목이 똑같지만, 다른 문제이다. 그쪽은 구간 업데이트/포인트 쿼리.

	*  lazy propagation를 이용하면 쉽게 구현이 가능하다
		*  lazy propagation에서 사용한 노테이션대로, f,g,h 를 정의하면</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12865?rev=1693485594&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-31T12:39:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>평범한 배낭</title>
        <link>https://teferi.net/ps/problems/boj/12865?rev=1693485594&amp;do=diff</link>
        <description>평범한 배낭

풀이

	*  기본적인 0-1 knapsack
	*  0-1 배낭문제를 DP로 풀때는 무게를 기준으로 최대 가치를 저장하는 DP와, 가치를 기준으로 최소 무게를 저장하는 DP의 두가지 방법으로 풀수 있는데, 이 문제에서는 최대 무게도 100,000이고 가치의 최대 합도 100,000 이므로 어느쪽으로 풀어도 상관없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12893?rev=1668220808&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-12T02:40:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>적의 적</title>
        <link>https://teferi.net/ps/problems/boj/12893?rev=1668220808&amp;do=diff</link>
        <description>적의 적

풀이

	*  적대 관계 노드쌍 사이에 에지를 연결했을때 2색 색칠이 가능하면 이론이 성립한다. 7585와도 거의 같은 문제.
	*  그래프가 2색 색칠이 가능한지, 다시말해 이분그래프인지 확인하는 것은 BFS나 DFS를 사용해서 간단히 처리할수 있고 이 경우의 시간복잡도는 O(V+E)이다. 또는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12895?rev=1619795611&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:13:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>화려한 마을</title>
        <link>https://teferi.net/ps/problems/boj/12895?rev=1619795611&amp;do=diff</link>
        <description>화려한 마을

풀이

	*  lazy propagation를 이용해서 푸는 구간 업데이트 + 구간 쿼리 문제.
	*  원래 구간에서 서로 다른 수의 갯수를 찾는 것은 기본적으로 업데이트가 있을 때에는 효율적으로 처리하기 어려운 종류의 쿼리이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12896?rev=1761893112&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-31T06:45:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스크루지 민호</title>
        <link>https://teferi.net/ps/problems/boj/12896?rev=1761893112&amp;do=diff</link>
        <description>스크루지 민호

풀이

	*  트리의 반지름 을 구하는 기본적인 문제. 링크에서 설명하는 알고리즘을 그대로 적용하면 된다. 시간복잡도는 O(n)

코드



	*  Dependency: teflib.tree.DistanceMeasures

boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12925?rev=1643782349&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-02T06:12:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Numbers</title>
        <link>https://teferi.net/ps/problems/boj/12925?rev=1643782349&amp;do=diff</link>
        <description>Numbers

풀이

	*  Numbers (Small)에서 n의 범위가 커진 문제. n제곱 계산 과는 완전히 동일한 문제이다.
	*  알고리즘 보다는 수학 문제에 더 가까운 문제. 고등수학 지식이 필요한건 아니지만 수학적인 아이디어가 필요하다.$a+\sqrt{b}$$3+\sqrt{5}$$3-\sqrt{5}&lt;1$$a_n = (3+\sqrt{5})^n + (3-\sqrt{5})^n$$\sqrt{b}$$(3-\sqrt{5})^n$$(3+\sqrt{5})^n$$a_n - 0.xxxx$$a_n - 1$$a_n = (3+\sqrt{5})^n + (3-\sqrt{5})^n$$\alpha =3+\sqrt{5}$$\beta = 3-\sqrt{5}$$\alpha$$\beta$$x^2 - 6x + 4 = 0$$\alpha^n= 6\alpha^{n-1} + 4\alpha^{n-2}$$\beta^n= 6\beta^{n-1} + 4\beta^{n-2}$$\alpha^n + \beta^n = 6(\alph…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12934?rev=1643780348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-02T05:39:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>턴 게임</title>
        <link>https://teferi.net/ps/problems/boj/12934?rev=1643780348&amp;do=diff</link>
        <description>턴 게임

풀이

	*  그리디 문제.
	*  i번째 턴에서 게임이 끝났을 경우, 양쪽이 가져간 점수의 합은 1+2+...+i = i(i+1)/2 이다. i(i+1)/2 = x+y 가 되는 i를 계산해서 총 몇턴이 걸렸는지를 먼저 찾는다. 이러한 i가 없으면 불가능하다고 출력하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12941?rev=1688660187&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-06T16:16:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 게임</title>
        <link>https://teferi.net/ps/problems/boj/12941?rev=1688660187&amp;do=diff</link>
        <description>동전 게임

풀이

	*  동전이 n개 있을때의 그런디수를 g(n)라고 하자.
	*  동전 2x개를 동전 x개짜리 무더기 K개로 바꾸는 행동을 할때를 생각하면, 동전 n개짜리 무더기 K개의 그런디수는 g(x)^g(x)^</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/12986?rev=1620315054&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-06T15:30:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>화려한 마을2</title>
        <link>https://teferi.net/ps/problems/boj/12986?rev=1620315054&amp;do=diff</link>
        <description>화려한 마을2

풀이

	*  Frequent values와 같은 문제.
	*  구간 mode 쿼리인 것 처럼 보이지만, 밝기값들이 정렬되어 있다는 조건이 있기 때문에 더 쉽게 풀수 있다.
		*  꼭 정렬되어있지 않더라도, 같은 값들이 인접하게 배치되도록 그룹핑되어 있다면 같은 방법으로 풀 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13018?rev=1743689860&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-03T14:17:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>특이한 수열</title>
        <link>https://teferi.net/ps/problems/boj/13018?rev=1743689860&amp;do=diff</link>
        <description>특이한 수열

풀이

	*  n-k개의 수는 서로소가 되고, k개의 수는 서로소가 안되어야 한다. 
	*  차이가 1인 두 수는 서로소가 된다는 사실을 이용하면, 1≤i≤x-1인 i에 대해서 A[i]=i+1 로 정하는 방식으로, 모두 서로소가 되도록 만들수 있다. A[x]=1 로 두면, 1부터 x까지의 수를 사용해서 gcd(i, A[i]) &gt; 1 을 만족하는 i가 한개도 없도록 만들 수 있다. x≤i≤n 까지의 i에 대해서는 A[i]=i가 되도록 하면, 거기에 포함되는 (n-x+1)개 수들은 모두 gcd(i, A[i]) = i &gt; 1를 만족하게 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13022?rev=1642606637&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-19T15:37:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>늑대와 올바른 단어</title>
        <link>https://teferi.net/ps/problems/boj/13022?rev=1642606637&amp;do=diff</link>
        <description>늑대와 올바른 단어

풀이

	*  그냥 주어진 조건에 맞는지 시키는대로 확인하면 되는 문제. 같은 글자별로 그룹을 만들어 놓고 하면 좀더 간단한데, w그룹, o그룹, l그룹, f그룹이 반복되는 순서로 등장해야 하고, 이것을 한 사이클이라 하면 한 사이클 안의 그룹들의 글자수가 전부 똑같아야 한다. 이것을 만족하면 올바른 단어이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13034?rev=1654610449&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-07T14:00:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>다각형 게임</title>
        <link>https://teferi.net/ps/problems/boj/13034?rev=1654610449&amp;do=diff</link>
        <description>다각형 게임

풀이

	*  여러개의 게임을 동시에 진행하는 형태가 아닌것 같아 보이지만, 선을 긋는 행위를 두개의 다각형으로 나누는 것으로 생각할수 있다. 그래서 스프라그-그런디 정리를 적용할수 있는 문제가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13038?rev=1690647644&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-29T16:20:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Tree</title>
        <link>https://teferi.net/ps/problems/boj/13038?rev=1690647644&amp;do=diff</link>
        <description>Tree

풀이

	*  아이디어보다는 사전지식의 결합으로 이루어진 문제.
	*  트리에서 두 노드간의 거리를 구하는 쿼리는 LCA를 이용해서 처리할수 있다. {u의 depth} + {v의 depth} - {lca(u,v)의 depth}*2 로 구할 수 있다. 여기에서 어떤 노드 u를 지우는 것은 u의 서브트리 안에 모든 노드에 대해서 depth를 1 줄여주는 것과 동일한 효과를 낸다. lca를 구하는 것은 동일하고, u,v,lca(u,v)의 depth를 계산할때 원래 그 노드의 depth에서 줄어든 값들을 빼서 계산하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13092?rev=1615807335&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-15T11:22:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Optimal Tournament</title>
        <link>https://teferi.net/ps/problems/boj/13092?rev=1615807335&amp;do=diff</link>
        <description>Optimal Tournament

풀이

	*  k 제한이 없다고 생각하고 문제를 보자.
	*  S={A1, ..., An} 으로 놓고 DP식을 세우면 아래처럼 될 것이다.
		*  dp[S] = min_S1⊂S {dp[S1] + dp[S-S1] + |max(S1) - max(S-S1)|}

	*  즉, 전체 지루함 = 전체를 두 그룹으로 나눠서 각 그룹에서 승자를 뽑을때까지 생기는 지루함 + 두 그룹의 최종 승자끼리 붙는 매치의 지루함 이다. 그런데 최종 매치의 지루함은 두 그룹의 최종 승자인 max(S1)과 max(S-S1)에만 관련이 있고, 나머지들은 어떻게 배치되는 상관이 없다. 그리고 각 그룹에서 승자를 뽑을때까지 생기는 지루함을 줄이기 위해서는 그 그룹안에 최강자와 최약자 사이의 갭이 작은 것이 유리하다.이 두가지를 조합하면, S를 S1과 S-S1으로 쪼개면서 max(S1)=X이고 max(S-S1)=max(S)=Y가 되게 한다면, S1에는 X보다 작은 Ai를 모두 넣고,…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13144?rev=1638930127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-08T02:22:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>List of Unique Numbers</title>
        <link>https://teferi.net/ps/problems/boj/13144?rev=1638930127&amp;do=diff</link>
        <description>List of Unique Numbers

풀이

	*  중복 원소를 포함하지 않는 부분배열의 갯수를 구하는 문제.
	*  R로 끝나는 부분배열 A[i...R] 에 대해서 생각해보면. 중복 원소를 포함하지 않는 A[i...R]의 갯수는, 중복 원소를 포함하지 않는 A[i</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13163?rev=1648190117&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-25T06:35:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>닉네임에 갓 붙이기</title>
        <link>https://teferi.net/ps/problems/boj/13163?rev=1648190117&amp;do=diff</link>
        <description>닉네임에 갓 붙이기

풀이

	*  그냥 기초적인 구현문제. 따로 설명할것이 없음

코드



boj ps:problems:boj:브론즈_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13164?rev=1643386057&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-28T16:07:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행복 유치원</title>
        <link>https://teferi.net/ps/problems/boj/13164?rev=1643386057&amp;do=diff</link>
        <description>행복 유치원

풀이

	*  K개의 조를 a[0]~a[i1] / a[i1+1]~a[i2] / a[i2+1]~a[i3] / ... / a[i(k-1)+1] ~ a[n-1] 으로 나눠서 만들었다고 하면. 티셔츠의 비용은 a[i1]-a[0] + a[i2]-a[i1+1] + ... + a[n-1] - a[i(k-1)+1] 이다. 식 순서를 바꾸면 (a[n-1]-a[0]) - (a[i1+1] - a[i1]) - (a[i2+1] - a[i2]) -</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13171?rev=1628771039&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-12T12:23:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A</title>
        <link>https://teferi.net/ps/problems/boj/13171?rev=1628771039&amp;do=diff</link>
        <description>A

풀이

	*  거듭제곱의 빠른 계산 (Exponentiation by squaring)을 설명하는 문제. 설명된대로 구현하면 된다. 물론 파이썬에서는 그냥 pow(a,x,mod)를 쓰면 된다.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13172?rev=1628769906&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-12T12:05:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Σ</title>
        <link>https://teferi.net/ps/problems/boj/13172?rev=1628769906&amp;do=diff</link>
        <description>Σ

풀이

	*  문제 지문이, 문제라기보다는 강의에 가깝다. 내용을 이해하고서 시키는 대로 짜면 된다.
	*  다만 문제에서 설명하는 방법은, 분수를 모듈러역원을 이용해서 정수로 표현하고 나면, 분수의 합을 그냥 정수의 합으로 편리하게 계산할 수 있다는 것인데, 이렇게 시키는대로 짜면 조금 느리다. 모듈러 역원을 구하는 데에 O(logn)이 들기 때문에, m개의 분수를 모두 정수 표현으로 바꾸려면 O(mlogn)이 걸린다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13214?rev=1763040859&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T13:34:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Swaps</title>
        <link>https://teferi.net/ps/problems/boj/13214?rev=1763040859&amp;do=diff</link>
        <description>Swaps

풀이

	*  기본적으로 열 정렬정렬 정과 같은 문제이다. 정렬된 상태가 아니라 B로 바꾸어야 하는게 다른점인데, B가 정렬된 상태가 되도록 원소값들을 치환한 뒤에 똑같은 방식으로 풀면 된다. 시간복잡도는 O(n)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13258?rev=1689432648&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-15T14:50:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>복권 + 은행</title>
        <link>https://teferi.net/ps/problems/boj/13258?rev=1689432648&amp;do=diff</link>
        <description>복권 + 은행

풀이

	*  처음에 별생각 없이 O(n^2) dp로 풀었었는데, 풀고 나서 내코드가 다른 코드들보다 훨씬 느리다는 것을 파악하고서 단순히 O(n)으로 푸는 방법이 있다는 것을 알게되었다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13260?rev=1615214311&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-08T14:38:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문자열 자르기</title>
        <link>https://teferi.net/ps/problems/boj/13260?rev=1615214311&amp;do=diff</link>
        <description>문자열 자르기

풀이

	*  사실상 파일 합치기와 동일한 문제이고, 그것은 곧 최적 이진 검색 트리와 동일한 문제임을 의미한다.
	*  문제에서 주어지는 문자열의 위치들로부터 각각의 문자열의 길이를 구해서 C라는 배열에 저장해놓고 보면, 코스트 펑션이 같기 때문에, 조각난 상태에서 차례대로 합치는 것이나 합쳐진 상태에서 차례대로 잘라서 조각으로 만드는 것이나, 순서만 거꾸로일뿐 최적 방법은 똑같다는 것을 알 수 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13265?rev=1774518636&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T09:50:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>색칠하기</title>
        <link>https://teferi.net/ps/problems/boj/13265?rev=1774518636&amp;do=diff</link>
        <description>색칠하기

풀이

	*  기본적인 이분 그래프 (Bipartite graph) 판별 문제. 2색으로 색칠이 가능한 그래프 == 이분 그래프이다
	*  시간복잡도는 O(V+E)

코드



	*  Dependency: teflib.graph.is_bipartite

boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13275?rev=1625413498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-04T15:44:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 팰린드롬 부분 문자열</title>
        <link>https://teferi.net/ps/problems/boj/13275?rev=1625413498&amp;do=diff</link>
        <description>가장 긴 팰린드롬 부분 문자열

풀이

	*  가장 긴 팰린드롬 부분 문자열 와 완벽히 동일한 문제.
	*  말 그대로 가장 긴 팰린드롬 부분문자열 (Longest Palindromic Substring)을 구하는 문제. 링크에 설명된대로 Manacher's algorithm을 사용해서 O(n)에 풀수 있다.

코드



	*  Dependency: teflib.string.palindrome_radiuses

boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13277?rev=1613275250&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-14T04:00:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>큰 수 곱셈</title>
        <link>https://teferi.net/ps/problems/boj/13277?rev=1613275250&amp;do=diff</link>
        <description>큰 수 곱셈

풀이

	*  큰 수의 곱셈을 계산하는 것은 카라츠바 알고리즘, FFT 알고리즘 등이 필요한 고급 알고리즘이지만, 파이썬을 비롯한 몇몇 언어들은 내부적으로 이것들이 이미 구현되어 있어서 그냥 가져다 쓰기만 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13294?rev=1637254510&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-18T16:55:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>역팩토리얼</title>
        <link>https://teferi.net/ps/problems/boj/13294?rev=1637254510&amp;do=diff</link>
        <description>역팩토리얼

풀이

	*  1부터 i까지 곱해서 i!를 계산해 나가다가 주어진 수와 같아지면 종료..하는 것은 O(n)이긴 하지만, 수가 너무 커지기 떄문에 불가능한 방법이다.
	*  이 아이디어를 살려서 O(n)으로 푸는 방법은, 로그를 취한 값을 더해 나가는 것이다. 입력받는 수는 너무 커서 정수로 변환할수도 없지만, 문자열로 입력받았을때 문자열의 길이 l이 수의 자리수이고, 따라서 l-1 $ \ln n!\sim n(\ln n-1)+{\frac  12}\ln(2\pi n) $…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13300?rev=1640262540&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:29:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>방 배정</title>
        <link>https://teferi.net/ps/problems/boj/13300?rev=1640262540&amp;do=diff</link>
        <description>방 배정

풀이

	*  총 12개의 {학년}x{성별} 조합에 대해서 인원이 몇명인지를 체크하고, 인원수에 따라서 몇개의 방이 필요한지 계산해서 다 더해주면 된다.
	*  시간복잡도는 O(n)

코드



boj ps:problems:boj:브론즈_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13303?rev=1665647712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-13T07:55:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>장애물 경기</title>
        <link>https://teferi.net/ps/problems/boj/13303?rev=1665647712&amp;do=diff</link>
        <description>장애물 경기

풀이

	*  x방향으로의 이동거리는 일정하니, y방향으로의 이동거리만 계산해주면 된다.
	*  처음 출발점의 y좌표를 y0 이라고 하자. y0까지의 이동거리 d[y0] = 0이고, 임의의 y' 까지의 이동거리 d[y']은 d[y0] + abs(y'-y0) 이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13305?rev=1707363466&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-08T03:37:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>주유소</title>
        <link>https://teferi.net/ps/problems/boj/13305?rev=1707363466&amp;do=diff</link>
        <description>주유소

풀이

	*  그리디의 대표적인 유형중 하나. 주유소 문제 참고.
	*  이러한 문제는 현재 주유소에서 넣어야 하는 기름의 양을 즉시 결정하는 대신에, 일단 안 넣었다 치고서 시뮬레이션 하다가 나중에 필요해지면, 그제서야 아까 넣었던걸로 처리하는 것이 요령이다. 여기에서는 지나온 주유소중 가장 기름이 싼 주유소만 기억하고 있다가, 기름이 부족해지면 아까 그 주유소에서 기름을 샀던걸로 처리하는 방식으로 구현하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13306?rev=1634188613&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-14T05:16:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리</title>
        <link>https://teferi.net/ps/problems/boj/13306?rev=1634188613&amp;do=diff</link>
        <description>트리

풀이

	*  트리에서의 동적 연결성 문제이다. 엣지를 삭제하는 쿼리만 주어지는 유형으로, 트리 문제와 제목도 같고 내용도 거의 비슷하지만, 오프라인 쿼리로 처리하는것이 가능하기 때문에 훨씬 쉽다.
	*  쿼리를 모두 읽어들인 뒤에 역순으로 처리하면, 실제 엣지를 삭제하는 쿼리를 엣지를 추가하는 쿼리로 처리할 수 있다. 이것은 Disjoint Set으로 쉽게 처리 가능. 연결성 체크과 엣지 추가가 각각 disjoint set의 find와 union으로 처리되므로 시간복잡도는 쿼리당 O(α(n)). 총 n+q개의 쿼리를 처리하는 데에…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13309?rev=1621868044&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-24T14:54:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리</title>
        <link>https://teferi.net/ps/problems/boj/13309?rev=1621868044&amp;do=diff</link>
        <description>트리

풀이

	*  트리에서의 동적 연결성 문제이다. 엣지를 삭제하는 쿼리만 주어지고, 오프라인 쿼리로는 해결할 수 없는 문제이다.
	*  트리에서의 동적 연결성에서 설명했듯이 여러가지 풀이가 가능하다. 자세한 내용은 링크 참조
	*  각 풀이를 구현해서 적용한 결과, 걸린 시간은 다음과 같았다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13317?rev=1632411387&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-23T15:36:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>한 번 남았다</title>
        <link>https://teferi.net/ps/problems/boj/13317?rev=1632411387&amp;do=diff</link>
        <description>한 번 남았다

풀이

	*  잘못된 알고리즘에 대한 저격 데이터를 생성하라는 문제. 입력값도 따로 없다
	*  문제에서 잘못 작성한 알고리즘은 벨만-포드 알고리즘 이다. 음수 사이클이 없다면, 루프를 N-1번 돌릴때까지는 업데이트가 있을수 있지만, 그 이후에는 더이상 업데이트가 되지 않아야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13398?rev=1671349119&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-18T07:38:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연속합 2</title>
        <link>https://teferi.net/ps/problems/boj/13398?rev=1671349119&amp;do=diff</link>
        <description>연속합 2

풀이

	*  연속합 문제에서, 수 한개를 제거할수 있다는 조건이 추가된 문제이다.
	*  최대 부분합 (Maximum subarray problem)을 푸는 Kadane algorithm을 살짝 변형해서 적용하면 된다. 수를 제거하지 않았을때의 i에서 끝나는 최대 부분합과 수를 1개 제거했을 때의 i에서 끝나는 최대 부분합 두가지를 dp로 갱신해가면 된다. tl간복잡도는 O(n)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13409?rev=1634485829&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T15:50:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Black and White Boxes</title>
        <link>https://teferi.net/ps/problems/boj/13409?rev=1634485829&amp;do=diff</link>
        <description>Black and White Boxes

풀이

	*  사실 이 게임은 Blue-Red Hackenbush을 단순화한 버전이다. 이 게임은 조합론적 게임 이론에서 유명한 게임이다. 그리고 이 게임의 이론에 대해서 미리 알고 있다면 문제 풀이는 별로 어렵지 않다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13414?rev=1642871596&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-22T17:13:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수강신청</title>
        <link>https://teferi.net/ps/problems/boj/13414?rev=1642871596&amp;do=diff</link>
        <description>수강신청

풀이

	*  시키는대로 구현할 생각을 해보자. 대기목록을 리스트로 관리하면, 대기열에 있는 학생을 뒤로 보내는 연산을 할때 O(K) 시간복잡도가 걸리므로 문제가 된다.
	*  각 학생에 대해서 대기 순서를 저장하는 딕셔너리를 이용해서 관리해보자. 대기열에 있는 학생을 맨 뒤로 보내는 것은 딕셔너리에서 학생에 대한 순서를 현재 대기열의 길이로 업데이트하는 것만으로 처리되므로 O(1)에 업데이트가 된다. 업데이트가 모두 끝나면, 순서를 기준으로 정렬해서 앞의 K명을 출력하면 된다, 딕셔너리를 처리하는데 O(n), 그 뒤에 정렬하는데에 O(nlogn), 출력에 O(K). 총 시간복잡도는 O(nlogn +K가 된다)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13421?rev=1730129307&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-28T15:28:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문제제목</title>
        <link>https://teferi.net/ps/problems/boj/13421?rev=1730129307&amp;do=diff</link>
        <description>문제제목

풀이

국민 랜드

	*  문제 설명에 좀 명확하지 않은 부분들이 있다. 이는 뒤에 언급.
	*  조건을 만족하는 새로운 좌표는 (d,d), (d,-d), (-d,d), (-d,-d) 이다. 각 점은 d에 바뀌면 따라 직선을 따라 움직인다. 고정된 점들과 직선으로 움직이는 점들과의 거리는 맨하튼 거리를 쓰든 유클리드 거리를 쓰든 유니모달한 함수가 되는 것은 쉽게 알수 있다. 따라서 삼분탐색을 통해서 함수의 최솟값과 그때의 d값을 쉽게 구할 수 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13444?rev=1648195306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-25T08:01:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>보드 색칠하기</title>
        <link>https://teferi.net/ps/problems/boj/13444?rev=1648195306&amp;do=diff</link>
        <description>보드 색칠하기

풀이

	*  2414와 비슷한 문제처럼 보이지만, 같은 칸을 겹쳐서 색칠할수 있는지 없는지에 따라서 큰 차이가 있고, 전혀 다른 접근법이 필요하다. (공교롭게도 둘가 이분매칭이 정해이기는 하다.. 그래프 모델링 방법은 완전히 다르지만)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13537?rev=1619775468&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T09:37:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 1</title>
        <link>https://teferi.net/ps/problems/boj/13537?rev=1619775468&amp;do=diff</link>
        <description>수열과 쿼리 1

풀이

	*  구간 rank 쿼리의 기본 문제.
	*  구간 rank 쿼리에서 설명했듯이, 오프라인 쿼리로 풀 수 있는 경우에는, Order Statistic Tree를 써서 푸는 것이 가장 효율적이다. 구체적인 방법은 링크 참조.
		*  Persistent Segment Tree나 머지소트트리를 사용하는 솔루션은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13544?rev=1620053723&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-03T14:55:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 3</title>
        <link>https://teferi.net/ps/problems/boj/13544?rev=1620053723&amp;do=diff</link>
        <description>수열과 쿼리 3

풀이

	*  구간 Rank 쿼리 에서 오프라인 쿼리 풀이를 막아놓은 버전.
		*  오프라인 쿼리가 막힌것만 제외하면 수열과 쿼리 1과 동일하다. 오프라인 쿼리 풀이 방식을 보고 싶으면 그쪽을 참고.

	*  구간 Rank 쿼리에서 설명했듯 PST를 사용하는 풀이 (시간복잡도</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13547?rev=1620124974&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T10:42:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 5</title>
        <link>https://teferi.net/ps/problems/boj/13547?rev=1620124974&amp;do=diff</link>
        <description>수열과 쿼리 5

풀이

	*  서로 다른 수와 쿼리 1 과 동일한 문제. 풀이는 그쪽을 참고.
	*  n, m의 범위 제한이 작아서 Mo's algorithm으로 풀린다는 차이가 있긴 하다

코드



	*  Dependency: teflib.fenwicktree.FenwickTree

boj ps:problems:boj:플래티넘_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13549?rev=1663865458&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T16:50:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숨바꼭질 3</title>
        <link>https://teferi.net/ps/problems/boj/13549?rev=1663865458&amp;do=diff</link>
        <description>숨바꼭질 3

풀이

	*  간단한 방법은 그냥 조건대로 각 위치를 노드로 만들고, 노드마다 3개씩의 엣지를 만들어서 단일 출발지 최단 경로 (Single Source Shortest Path) 알고리즘으로 푸는 것이다. 코스트가 0 또는 1만 존재하므로 0-1 BFS를 사용해서 풀 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13557?rev=1619795849&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:17:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 10</title>
        <link>https://teferi.net/ps/problems/boj/13557?rev=1619795849&amp;do=diff</link>
        <description>수열과 쿼리 10

풀이

	*  부분합 쿼리(금광세그)의 응용.
	*  l과 r의 위치에 제약이 추가된 부분합의 형태인데.. 일반적인 부분합을 구하기 위해서 필요한 4가지 대푯값들, lmax, rmax, max, all 을 잘 조합해서 요구하는 값을 구할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13575?rev=1613885940&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-21T05:39:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>보석 가게</title>
        <link>https://teferi.net/ps/problems/boj/13575?rev=1613885940&amp;do=diff</link>
        <description>보석 가게

풀이

	*  고속 푸리에 변환 (Fast Fourier Transform, FFT)을 이용해서 All Possible Sums를 구하는 방식으로 보석 2개를 훔칠때의 가치의 합의 목록을 구할 수 있다. 이 결과에 같은 작업을 또 한번 적용하면 보석 3개를 훔칠때의 가치의 합들을 구할수 있고, 이런식으로 K개를 훔칠때의 합을 계산하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13576?rev=1671247410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-17T03:23:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Prefix와 Suffix</title>
        <link>https://teferi.net/ps/problems/boj/13576?rev=1671247410&amp;do=diff</link>
        <description>Prefix와 Suffix

풀이

	*  모든 border에 대해서 등장 횟수를 구하라는 문제이다.
	*  모든 prefix의 등장 횟수 세기는 O(n)에 가능하고, 모든 Border 찾기도 O(n)에 가능하다. 실패함수를 써서 하는 방법과 z 배열을 써서 하는 방법 모두 링크에 설명되어있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13713?rev=1671179323&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T08:28:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문자열과 쿼리</title>
        <link>https://teferi.net/ps/problems/boj/13713?rev=1671179323&amp;do=diff</link>
        <description>문자열과 쿼리

풀이

	*  F(i)의 정의를 살펴보면, 결국 S를 뒤집어서 만든 문자열 S[::-1]에 대해 z배열을 만든것과 동일하다.
	*  z배열을 O(n)에 구하면 모든 쿼리를 O(1)에 대답 가능하다.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13716?rev=1692932916&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-25T03:08:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 수열처럼 보이지만...</title>
        <link>https://teferi.net/ps/problems/boj/13716?rev=1692932916&amp;do=diff</link>
        <description>피보나치 수열처럼 보이지만...

풀이

	*  식을 잘 정리하면 점화식을 찾을수 있긴 한거 같은데, 그 난이도가 그렇게 간단치는 않다 보니 벌리캠프-매시 를 활용해서 선형 점화식을 구하는 연습문제로 유명해졌다.$ F_i i^k = (F_{i+1} - F_{i-1}) i^k $</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13899?rev=1691117671&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-04T02:54:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Coordinates</title>
        <link>https://teferi.net/ps/problems/boj/13899?rev=1691117671&amp;do=diff</link>
        <description>Coordinates

풀이

	*  (u,v) 를 연결하는 엣지가 있을때, 둘 중 한 노드의 좌표를 알고 있으면 다른쪽 노드의 좌표도 계산이 가능하다.
	*  처음에 노드 하나를 임의의 좌표로 지정하고 (첫 좌표를 (0,0)으로 잡으면 모든 좌표들이 범위 안에 들어간다), 그 노드에 연결된 노드들에 대해서 좌표를 계산하고 다시 여기에 연결된 노드에 대해서 좌표를 계산하고 하는 식으로, BFS나 DFS로 그래프를 탐색해나가면서 방문된 노드들의 좌표를 갱신해주면 끝. 시간복잡도는 O(N+M)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13904?rev=1649863247&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T15:20:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>과제</title>
        <link>https://teferi.net/ps/problems/boj/13904?rev=1649863247&amp;do=diff</link>
        <description>과제

풀이

	*  컵라면과 동일한 문제이지만, n의 범위가 작아서 좀더 비효율적인 알고리즘으로도 해결이 가능하다.
	*  그리디 알고리즘으로 풀리는 문제
	*  가능한 가장 점수가 높은 과제들을 푸는게 당연히 유리하다. 그리고 과제를 제출할때는 제출가능한 가장 늦은 날짜에 제출하는 것이 유리하다. 그그 경우에 이후의 과제들을 제출할때 선택지를 가장 넒게 남겨주기 때문이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13925?rev=1619795597&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:13:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 13</title>
        <link>https://teferi.net/ps/problems/boj/13925?rev=1619795597&amp;do=diff</link>
        <description>수열과 쿼리 13

풀이

	*  구간 업데이트와 구간합 쿼리가 들어오는 문제이긴 한데, 단순히 세그먼트 트리와 lazy propagation를 이용해서 구현하기에는 업데이트 쿼리의 종류가 다양하다.
	*  업데이트를, x := ax+b 의 선형변환이라고 생각하면, 곱 업데이트는 (a,0), 합 업데이트는 (1,b), assignment 업데이트는 (0,b)로 생각해서 모두 처리할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13974?rev=1615285056&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-09T10:17:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파일 합치기 2</title>
        <link>https://teferi.net/ps/problems/boj/13974?rev=1615285056&amp;do=diff</link>
        <description>파일 합치기 2

풀이

	*  파일 합치기에서 n의 제한을 늘린 버전.
	*  풀이는 최적 이진 검색 트리를 참고. 여기에서는 Garsia–Wachs algorithm을 적용해서 O(n^2)으로 구현했다. 
	*  크누스 최적화를 사용해서 푼 코드는 파일 합치기를 참고

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13975?rev=1615286317&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-09T10:38:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파일 합치기 3</title>
        <link>https://teferi.net/ps/problems/boj/13975?rev=1615286317&amp;do=diff</link>
        <description>파일 합치기 3

풀이

	*  파일 합치기 1, 2, 4는 동일한 문제를 n의 범위만 다르게 한 것이지만, 이 문제는 문제 자체가 살짝 다르다. 다른 파일 합치기들은 인접한 파일들만 합칠 수 있어서 결국</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13976?rev=1627747889&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T16:11:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>타일 채우기 2</title>
        <link>https://teferi.net/ps/problems/boj/13976?rev=1627747889&amp;do=diff</link>
        <description>타일 채우기 2

	*  타일 채우기 문제에서 n의 범위만 증가시킨 문제.
		*  타일 채우기는 O(n)으로 풀어도 통과 가능하게 되어 있고, 이 문제는 O(logn)으로 풀어야만 통과 가능하게 되어 있다.


풀이

	*  타일 채우기 참고. 동일하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/13977?rev=1612113540&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-31T17:19:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수와 쿼리</title>
        <link>https://teferi.net/ps/problems/boj/13977?rev=1612113540&amp;do=diff</link>
        <description>이항 계수와 쿼리

풀이

	*  이항 계수를 반복적으로 계산하는 효율적인 방법을 묻는 문제이다. 
	*  설명은 이항 계수를 참고

코드



	*  Dependency: teflib.combinatorics.CombTable

boj ps:problems:boj:골드_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14002?rev=1640261127&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-23T12:05:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 증가하는 부분 수열 4</title>
        <link>https://teferi.net/ps/problems/boj/14002?rev=1640261127&amp;do=diff</link>
        <description>가장 긴 증가하는 부분 수열 4

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)문제. LIS의 길이뿐 아니라 LIS 시퀀스 한개를 함께 찾아야 한다.
	*  가장 긴 증가하는 부분 수열 5의 쉬운 버전으로 O(n^2) 알고리즘으로도 통과되는 것을 의도한 문제이다.
	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS) 에서 설명한대로 푸는 방법은 여러가지가 있고, DP(O(n^2)) &lt; 세그먼트 트리(O(nlogn)) &lt; 이진탐색(O(nlogn)) 순서대로 빠르다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14003?rev=1706867250&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-02T09:47:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 증가하는 부분 수열 5</title>
        <link>https://teferi.net/ps/problems/boj/14003?rev=1706867250&amp;do=diff</link>
        <description>가장 긴 증가하는 부분 수열 5

풀이

	*  가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS)문제에서 트래킹을 추가한 버전. 가장 긴 증가하는 부분 수열 4와 동일하지만, N의 범위가 커졌기 때문에 O(nlogn) 알고리즘이 강제된다.
	*  풀이 방법과 트래킹 방법은 가장 긴 증가하는 부분 수열 (Longest Increasing Subsequence / LIS) 을 참고.

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14241?rev=1772636690&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T15:04:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>슬라임 합치기</title>
        <link>https://teferi.net/ps/problems/boj/14241?rev=1772636690&amp;do=diff</link>
        <description>슬라임 합치기

풀이

	*  어떤 순서대로 합치든 답이 일정한 것을 쉽게 확인할수 있다.
	*  그러므로 그냥 앞에서부터 합쳐서 얻은 값을 출력하면 된다. 시간복잡도는 O(n)

코드



boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14245?rev=1620229797&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T15:49:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>XOR</title>
        <link>https://teferi.net/ps/problems/boj/14245?rev=1620229797&amp;do=diff</link>
        <description>XOR

풀이

	*  XOR과 제목이 똑같지만, 다른 문제이다. 그쪽은 구간 업데이트/구간 쿼리.
	*  구간합 업데이트/포인트 쿼리 문제의 구간 XOR 쿼리 버전.
	*  XOR 연산은 합 연산과 거의 비슷한 특성을 지니므로, 구간 합의 테크닉을 거의 다 적용 가능하다. 구간 합에서는,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14267?rev=1619801245&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T16:47:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사 문화 1</title>
        <link>https://teferi.net/ps/problems/boj/14267?rev=1619801245&amp;do=diff</link>
        <description>회사 문화 1

풀이

	*  회사 문화 2에서 했듯이 오일러 경로 테크닉을 적용한 뒤에, 구간 쿼리로 풀어도 되긴 한다. 이 경우는 구간합 업데이트가 미리 주어진 이후에 포인트 쿼리를 요구하는 문제가 되므로, 구간 합에서 설명한 원소의 값을 구간합으로 처리하는 테크닉을 적용해서, m개의 쿼리를 O(1)에 처리하고 O(n)으로 prefix sum을 만든 뒤, 각 노드의 값을 O(1)에 계산하는 것이 가능하다. 그렇게 하면 전체 복잡도는 O(n+m)…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14268?rev=1619789756&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T13:35:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사 문화 2</title>
        <link>https://teferi.net/ps/problems/boj/14268?rev=1619789756&amp;do=diff</link>
        <description>회사 문화 2

풀이

	*  오일러 경로 테크닉을 적용한 뒤, 구간합 업데이트 + 포인트 쿼리를 처리하는 문제.
	*  서브트리의 루트도 업데이트 된다는 점만 제외하면 자동차 공장과 동일한 문제이므로, 자세한 풀이는 그쪽을 참조.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14284?rev=1708651478&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-23T01:24:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>간선 이어가기 2</title>
        <link>https://teferi.net/ps/problems/boj/14284?rev=1708651478&amp;do=diff</link>
        <description>간선 이어가기 2

풀이

	*  설명을 살짝 꼬아놓았지만, 결국은 두 점 사이의 최단 경로의 길이를 구하라를 문제이다.
	*  가중치가 양수이므로 그냥 데이크스트라를 돌려서 구해주면 끝.
	*  문제에서는 중복 엣지가 존재하지 않는다는 조건이 따로 없으므로 이것을 고려해줘야 할것 같은데, 고려하지 않고 짜도 잘 통과된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14287?rev=1619799607&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T16:20:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사 문화 3</title>
        <link>https://teferi.net/ps/problems/boj/14287?rev=1619799607&amp;do=diff</link>
        <description>회사 문화 3

풀이

	*  회사 문화 2에서 칭찬의 방향이 바뀐 문제이다. 
	*  회사 문화 2에서 했던 것처럼 매번 칭찬의 대상자들의 칭찬값을 구간 업데이트로 처리하려고 하면, 루트로 이어지는 경로상의 노드들을 모두 업데이트 해야 하므로 Heavy light decomposition 이 필요하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14288?rev=1619794775&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T14:59:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사 문화 4</title>
        <link>https://teferi.net/ps/problems/boj/14288?rev=1619794775&amp;do=diff</link>
        <description>회사 문화 4

풀이

	*  회사 문화 2와 회사 문화 3을 합쳐 놓은 문제
	*  부하방향 칭찬과 상사방향 칭찬을 동시에 계산 가능하도록 하려고 고심할 필요가 없다. 그냥 부하방향으로 받은 칭찬과 상사방향으로 받은 칭찬을 따로따로 처리한 뒤에, 칭찬값의 합을 출력할때에는 두 가지를 더해서 출력하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14390?rev=1648190387&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-25T06:39:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>타일 놓기</title>
        <link>https://teferi.net/ps/problems/boj/14390?rev=1648190387&amp;do=diff</link>
        <description>타일 놓기

풀이

	*  설명은 조금 다르지만 보드 색칠하기와 동일한 것을 구하는 문제이고. 구해야 하는 N과 M의 크기만 작아졌다. 
	*  비트 스크롤링 DP와 이분 매칭 (Bipartite Matching)으로 푸는 두가지 풀이가 있다. 이 문제에서는 두 방법 다 통과 가능하고,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14425?rev=1609165352&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-28T14:22:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>문자열 집합</title>
        <link>https://teferi.net/ps/problems/boj/14425?rev=1609165352&amp;do=diff</link>
        <description>문자열 집합

풀이

	*  트라이 (Trie)로 태그된 문제들을 찾다가 풀게 된 문제이지만, 사실 이 문제에 트라이는 필요없다.
		*  단순히 집합에서 원소의 유무를 찾는 작업에는 trie나 set이나 시간복잡도가 동일하다. N개의 문자열로 구성된 set생성에 O(N*l), M개의 문자열을 검색하는 데에 O(M*l) 이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14427?rev=1621000175&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-14T13:49:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 15</title>
        <link>https://teferi.net/ps/problems/boj/14427?rev=1621000175&amp;do=diff</link>
        <description>수열과 쿼리 15

풀이

	*  업데이트 쿼리와 구간 최솟값 쿼리를 살짝 변형해서, 구간 최솟값의 인덱스를 물어보는 문제이다.
	*  그냥 각 노드에 값 대신에, (값, 인덱스)의 튜플을 저장해주면 구간 최솟값을 위한 세그먼트 트리를 그대로 사용해서 풀수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14428?rev=1619795816&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:16:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 16</title>
        <link>https://teferi.net/ps/problems/boj/14428?rev=1619795816&amp;do=diff</link>
        <description>수열과 쿼리 16

풀이

	*  수열과 쿼리 15에서 최솟값 쿼리 범위가 항상 전체로 되어 있던 것을, 구간 쿼리로 바꾼 문제이다.
	*  수열과 쿼리 15에서 세그먼트 트리를 쓰는 방법 외에도, 우선순위큐를 써서 풀 수 있었지만, 이제는 세그먼트 트리를 써야만 한다. 세그먼트 트리로 푸는 방법은 똑같다. 그냥 각 노드에 값 대신에, (값, 인덱스)의 튜플을 저장해주면 구간 최솟값을 위한 세그먼트 트리를 그대로 사용해서 풀수 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14437?rev=1775731862&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-09T10:51:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>준오는 심술쟁이!!</title>
        <link>https://teferi.net/ps/problems/boj/14437?rev=1775731862&amp;do=diff</link>
        <description>준오는 심술쟁이!!

풀이

	*  바꿔쓰면 0≤x_i≤25 일때, x_1+x_2+..+x_l = s 가 되는 (x_1,...,x_l) 의 개수를 세는 문제이다
	*   공식 풀이는 O(s*l) 의 DP이지만, 조합론적 방법으로 O(s+l) 에 해결이 가능하다. 풀이는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14438?rev=1619795824&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:17:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 17</title>
        <link>https://teferi.net/ps/problems/boj/14438?rev=1619795824&amp;do=diff</link>
        <description>수열과 쿼리 17

풀이

	*  업데이트 쿼리와 구간 최솟값 쿼리가 주어지는 문제이다.
	*  세그먼트 트리를 이용해서 업데이트와 구간최솟값 쿼리를 모두 O(logn)에 처리 가능하다.
	*  구간 합과는 달리, 펜윅트리는 일반적인 방법으로는 적용이 불가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14444?rev=1625412746&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-04T15:32:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 팰린드롬 부분 문자열</title>
        <link>https://teferi.net/ps/problems/boj/14444?rev=1625412746&amp;do=diff</link>
        <description>가장 긴 팰린드롬 부분 문자열

풀이

	*  가장 긴 팰린드롬 부분 문자열 와 완벽히 동일한 문제.
	*  말 그대로 가장 긴 팰린드롬 부분문자열 (Longest Palindromic Substring)을 구하는 문제. 링크에 설명된대로 Manacher's algorithm을 사용해서 O(n)에 풀수 있다.

코드



	*  Dependency: teflib.string.palindrome_radiuses

boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14446?rev=1621329116&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-18T09:11:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Promotion Counting</title>
        <link>https://teferi.net/ps/problems/boj/14446?rev=1621329116&amp;do=diff</link>
        <description>Promotion Counting

풀이

	*  오일러 경로 테크닉과 구간 Rank 쿼리를 결합한 문제. 추가적으로 구간압축이 필요한 정도를 제외하면트리와 색깔와 거의 동일한 방식으로 풀린다.
	*  각각의 서브트리에 대해서, 서브트리의 루트보다 큰 값을 갖는 노드의 갯수를 구하면 된다. X보다 큰 값의 갯수를 구하는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14500?rev=1637254122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-18T16:48:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>테트로미노</title>
        <link>https://teferi.net/ps/problems/boj/14500?rev=1637254122&amp;do=diff</link>
        <description>테트로미노

풀이

	*  5종류의 테트로미노를 회전/대칭시키면 총 19개의 모양이 나온다. 이 19개의 모양들을 각각 그리드 위에서 움직여보면서 점수를 계산해보고, 그중에서 최대값을 구하면 된다. 알고리즘은 간단하지만, 구현이 귀찮다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14501?rev=1644077645&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-05T16:14:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>퇴사</title>
        <link>https://teferi.net/ps/problems/boj/14501?rev=1644077645&amp;do=diff</link>
        <description>퇴사

풀이

	*  퇴사 2의 쉬운 버전. 이 문제에서는 N이 워낙 작아서 브루트포스로도 풀리긴 한다.
	*  정해는 DP로 푸는 것. 하지만 DP[i] 를 i일째 받을수 있는 최대 금액이라고 놓았을때, i에 대해서 이러테이션하면서 DP[i]를 DP[j](j&lt;i) 들을 이용해서 계산하는 것은 잘 안된다. DP[i] = max(DP[i-1], max_j(DP[j] + P_j) if j + T_j == i) 이런식인데, 모든 j에 대해서 j + T_j가 i가 되는지를 찾아서 처리하려면 총 시간복잡도가 O(n^2)이 된다. i에 대해서 이터레이션 하면서 DP[i+T_i] = max(DP[i+T_i], DP[i] + P_i) 와 같은 식으로 업데이트해주어야 O(n)에 계산 가능하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14503?rev=1663086094&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-13T16:21:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>로봇 청소기</title>
        <link>https://teferi.net/ps/problems/boj/14503?rev=1663086094&amp;do=diff</link>
        <description>로봇 청소기

풀이

	*  그냥 시키는대로 시뮬레이션하면 되는 문제.
	*  진행 방향을 회전시키는 것을 구현하는 것은, 동서남북 4방향을 배열에 넣어두고, 현재 방향을 인덱스로 해서 방향을 가져오는 식으로 구현하는 것이 보통일것이다. 회전하면 인덱스를 1증가시키는 식으로. 그렇지만 여기에서는 덱에 4방향을 넣어두고, 회전하는 것을 그대로 덱을 로테이트 하는 식으로 처리했다. 현재 방향의 인덱스를 따로 갖고있을 필요가 없고, deq[0]이 항상 진행 방향, deq[1]이 왼쪽방향이 된다. 좀더 깔끔한것 같다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14572?rev=1631891639&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-17T15:13:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스터디 그룹</title>
        <link>https://teferi.net/ps/problems/boj/14572?rev=1631891639&amp;do=diff</link>
        <description>스터디 그룹

풀이

	*  효율성 공식에 따르면, 그룹이 커질수록 효율성도 항상 커진다. {A,B가 아는 모든 알고리즘의 수} ≤ {A,B,C가 아는 모든 알고리즘의 수}이고 {A,B가 모두 아는 알고리즘의 수} ≥ {A,B,C가 모두 아는 알고리즘의 수} 이므로 당연한 이야기이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14578?rev=1774533100&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T13:51:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>영훈이의 색칠공부</title>
        <link>https://teferi.net/ps/problems/boj/14578?rev=1774533100&amp;do=diff</link>
        <description>영훈이의 색칠공부

풀이

	*  먼저 빨간색만 색칠해보자. 색칠 방법은 N! 이다.
	*  이제 여기에 파란색을 색칠해보자. 각각의 열에 들어갈 행 번호가 모두 달라야 하고, 답이 될수 없는 번호가 하나씩 있다. n개의 원소가 모두 원래 위치에 있지 않게 배열하는 방법의 수와 같은 문제이므로</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14614?rev=1620230579&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:02:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Calculate!</title>
        <link>https://teferi.net/ps/problems/boj/14614?rev=1620230579&amp;do=diff</link>
        <description>Calculate!

풀이

	*  Calculate! 2 문제와 시리즈인듯 해서 봤는데, 난이도 차이가 매우 크다. Calculate!는 브론즈 3, Calculate! 2는 플래티넘 3.
	*  그냥 xor 연산을 알고 있느냐를 묻는 문제이다. 어떤 수에 같은 수를 두번 xor하면 원래 수가 된다. 즉, 짝수번 xor하면 원래 수가 되고, 홀수번 xor하면 한번 xor한 것과 동일하다. 이것만 알면 O(1)에 계산가능.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14636?rev=1676450061&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-15T08:34:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Money for Nothing</title>
        <link>https://teferi.net/ps/problems/boj/14636?rev=1676450061&amp;do=diff</link>
        <description>Money for Nothing

풀이

	*  문제를 정리하면 구해야 하는 것은 max_(i,j){ (q[i] - p[j]) * (e[i] - d[j]) } (q[i]&gt;p[j], e[i]&gt;d[j]) 이다.
		*  기하학적으로 이해하면, (q,e)를 우측 상단의 점으로 (p,d)를 좌측 하단의 점으로 갖는 직사각형의 면적이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14728?rev=1693486155&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-31T12:49:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>벼락치기</title>
        <link>https://teferi.net/ps/problems/boj/14728?rev=1693486155&amp;do=diff</link>
        <description>벼락치기

풀이

	*  전형적인 0-1 knapsack 문제. 무게(=공부시간)의 합이 배낭 용량(=남은 시간)을 초과하지 않으면서 가치(=점수)합을 최대화 시키도록 물건(=과목)들을 선택하면 하면 된다
	*  풀이는 평범한 배낭 참고.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14778?rev=1690509230&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-28T01:53:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>The Milk Queue</title>
        <link>https://teferi.net/ps/problems/boj/14778?rev=1690509230&amp;do=diff</link>
        <description>The Milk Queue

풀이

	*  Mountain Climbing 동일한 문제. 풀이는 그쪽을 참고. 덤으로, Cakes도 동일한 문제.

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14854?rev=1613484883&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-16T14:14:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이항 계수 6</title>
        <link>https://teferi.net/ps/problems/boj/14854?rev=1613484883&amp;do=diff</link>
        <description>이항 계수 6

풀이

	*  모듈러스 142857은 제곱인수를 포함하는 합성수이다. 이항 계수 - 모듈러스가 임의의 합성수일 때의 방법을 사용해서 푼다.
	*  142857 = 3^3*11*13*37 에서 법 3^3에 대한 나머지는 n! = n!_p * c(p) 로 고쳐서 풀어야 하지만, 법 11,13,37에 대한 나머지는 n! = n!_p * c(p) 로 풀지 않고 뤼카의 정리로 풀 수도 있다. 둘다 같은 방법으로 처리하면 코드짜기는 쉽지만, 속도는 뤼카의 정리를 썼을때가 300ms 정도 더 빨랐다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14897?rev=1620109762&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T06:29:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>서로 다른 수와 쿼리 1</title>
        <link>https://teferi.net/ps/problems/boj/14897?rev=1620109762&amp;do=diff</link>
        <description>서로 다른 수와 쿼리 1

풀이

	*  구간 내에서 서로 다른 수의 갯수를 찾는 쿼리는 적절한 변환을 통해서 구간 Rank 쿼리 문제로 변환할 수 있다.
	*  주어진 수열 A[0:n]에 대응하는 수열 B[0:n]을 만든다. B[i]=x, where A[x] = A[i] and x&gt;i 로 잡는다. 쉽게 말해 i 이후에 처음으로 A[i]값이 다시 등장하는 인덱스를 B[i]로 잡는다. 이렇게 하면 이제 [l:r]구간에서 서로 다른 수의 갯수는 B[i]&gt;r인 수의 갯수이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14908?rev=1684991543&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-25T05:12:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구두 수선공</title>
        <link>https://teferi.net/ps/problems/boj/14908?rev=1684991543&amp;do=diff</link>
        <description>구두 수선공

풀이

	*  Exchange argument 를 통해 그리디한 풀이를 도출해낼수 있다.
	*  현재 시간이 t0일때,
		*  i번=&gt;j번 순서로 고르고 나면 시간은 t0+Ti+Tj 이고, 벌금은 t0*Si +(t0+Ti)*Sj
		*  j번=&gt;i번 순서로 고르고 나면 시간은 t0+Ti+Tj 이고, 벌금은 t0*Sj +(t0+Tj)*Si</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14921?rev=1631888313&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-17T14:18:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>용액 합성하기</title>
        <link>https://teferi.net/ps/problems/boj/14921?rev=1631888313&amp;do=diff</link>
        <description>용액 합성하기

풀이

	*  용액과 거의 똑같은 문제. 제목도 비슷하다. 출력할때 0에 가까운 특성값을 출력하느냐, 그 특성값을 만드는 용액이 무엇인지를 출력하느냐만 다르다.
	*  풀이는 용액 참고.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14929?rev=1644162352&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-06T15:45:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>귀찮아 (SIB)</title>
        <link>https://teferi.net/ps/problems/boj/14929?rev=1644162352&amp;do=diff</link>
        <description>귀찮아 (SIB)

풀이

	*  $(\sum{x_i})^2 = \sum{x_i^2} + 2\sum_{i\ne j}{x_i x_j}$ 이다. 합의 제곱에서 제곱의 합을 빼고 2로 나누면 끝.
	*  시간 복잡도는 O(n)

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14939?rev=1642867705&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-22T16:08:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>불 끄기</title>
        <link>https://teferi.net/ps/problems/boj/14939?rev=1642867705&amp;do=diff</link>
        <description>불 끄기

풀이

	*  Lights Out 라는 유명한 퍼즐을 가지고 만든 문제. 
	*  우선 관찰할 수 있는 것은 같은 스위치를 1번 넘게 누르는 것은 최적값이 될수 없다는 것이다. 따라서 최적방법은 몇개의 스위치를 골라서 한번씩 누르는 방법이 된다. 스위치가 100개니까, 2^100가지의 스위치 조합을 다 시도해보면 되긴 한다. 각 스위치 조합은 최대 100번 스위치를 누르면 되니까 O(100 * 2^100) 이면 이렇게 풀어도 돌아갈것 같기도 하다..…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/14959?rev=1671204123&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T15:22:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Slot Machines</title>
        <link>https://teferi.net/ps/problems/boj/14959?rev=1671204123&amp;do=diff</link>
        <description>Slot Machines

풀이

	*  수열로 주어지지만, 각 수들을 캐릭터처럼 생각하면 그냥 문자열이나 다름없다. 
	*  그러면, 주어진 문자열을, S = S[:K] + S[K:K+P]*n + S[K:K+m] 과 같은 형태로 표현하겠다는건데..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15015?rev=1768229246&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-12T14:47:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Manhattan Mornings</title>
        <link>https://teferi.net/ps/problems/boj/15015?rev=1768229246&amp;do=diff</link>
        <description>Manhattan Mornings

풀이

	*  가톨릭대는 고양이를 사랑해와 거의 동일한 문제.
	*  격자 경로에서 가장 많은 점수를 얻는 이동 경로를 찾는 문제로 링크에서 설명한대로 가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)를 이용해서 O(klogk)에 풀 수 있다.
	*  다만 가톨릭대는 고양이를 사랑해 보다 더 귀찮아진 부분은, 시작점과 끝점의 위치관계에 따라서 LIS 또는 LDS를 사용해야 한다는 점.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15106?rev=1623335986&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-10T14:39:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fear Factoring</title>
        <link>https://teferi.net/ps/problems/boj/15106?rev=1623335986&amp;do=diff</link>
        <description>Fear Factoring

풀이

	*  σ(x)은 x의 약수의 합을 의미하는 함수이다. f(1)+f(2)+...+f(N)을 계산에 설명했듯이 σ(1)+σ(2)+...+σ(x)는 O(sqrt(x))에 계산이 가능하다.
	*  σ(a)+σ(a+1)+...+σ(b) 는  {σ(1)+σ(2)+...+σ(b)} - {σ(1)+σ(2)+...+σ(a-1)} 으로 바꿔 계산하면 O(sqrt(b))에 계산 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15134?rev=1774922838&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T02:07:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Dividing Marbles</title>
        <link>https://teferi.net/ps/problems/boj/15134?rev=1774922838&amp;do=diff</link>
        <description>Dividing Marbles

풀이

	*  스스로 풀이를 완성하지는 못했고, 이것저것 자료들을 찾아보면서 풀게 되었는데 과정을 좀 적어보겠다. 풀이 자체는 링크된 글들에 다 있으니 패스..
		*  &lt;https://stonejjun.tistory.com/55&gt; 에는 풀이와 더불어, 풀이에 도달하기까지의 과정이 잘 정리되어있다. 저런 고수들도 나와 비슷한 관찰, 비슷한 추측, 비슷한 시도와 비슷한 실패의 과정을 거치면서 풀이를 찾아간다는 부분이 약간 위안이 되었다. 하지만 결론에서 간략한 증명 부분에서 좀 정확히 이해가 안된 부분이 있어서 저것으로 충분한지에 대해 확신이 잘 안들었고.. 다른 자료들을 더 찾아봤다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15311?rev=1744014463&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-07T08:27:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>약 팔기</title>
        <link>https://teferi.net/ps/problems/boj/15311?rev=1744014463&amp;do=diff</link>
        <description>약 팔기

풀이

	*  약봉지에 전부 1개씩 채우면 1~N까지의 모든 수를 만들수 있다.
	*  약봉지에 전부 2개씩 담으면 2~2까지의 모든 짝수를 만들수 있다. 그러면, 맨 왼쪽의 약봉지에만 1개를 담고, 나머지 (K-1)개의 약봉지는 2개를 담으면? 1부터 2K-1까지의 모든 수를 만들수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15337?rev=1673368273&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-10T16:31:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Starting a Scenic Railroad Service</title>
        <link>https://teferi.net/ps/problems/boj/15337?rev=1673368273&amp;do=diff</link>
        <description>Starting a Scenic Railroad Service

풀이

	*  문제를 잘 해석하고 조금 생각해보면 요구사항이 정리된다. policy-1 은 구간들 중에서 그 구간과 겹치는 구간의 갯수가 가장 많은 구간을 찾으라는 문제이다. 이때의 겹치는 구간의 갯수가 s1이 된다.. policy-2는 겹치는 구간의 갯수가 가장 많은 시점을 찾으라는 문제이다. 이때의 겹치는 구간의 갯수가 s2이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15440?rev=1770466394&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-07T12:13:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Vera And LCS</title>
        <link>https://teferi.net/ps/problems/boj/15440?rev=1770466394&amp;do=diff</link>
        <description>Vera And LCS

풀이

	*  주어진 문자열과 LCS가 특정 길이가 되는 문자열을 찾는 문제. 간단한 방법으로 O(n)에 처리 가능하다
		*  주어진 S와의 LCS의 길이가 최소가 되는 수열 찾기 참고.  


코드



boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15459?rev=1656776863&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-02T15:47:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Haybale Feast</title>
        <link>https://teferi.net/ps/problems/boj/15459?rev=1656776863&amp;do=diff</link>
        <description>Haybale Feast

풀이

	*  f의 합이 M 이상인 구간 중에서, max(s)값이 최소인 구간을 찾는 문제이다. 
	*  원래 이 문제를 O(nlogn)으로 푸는 세가지 방법을 열심히 적어놨었는데, 뒤늦게 O(n)으로 푸는 방법을 떠올리게 되었다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15460?rev=1690214276&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-24T15:57:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>My Cow Ate My Homework</title>
        <link>https://teferi.net/ps/problems/boj/15460?rev=1690214276&amp;do=diff</link>
        <description>My Cow Ate My Homework

풀이

	*  K개를 먹었을 때의 점수는, 뒤쪽의 N-K개에 대해서 ({총합} -{최솟값}) / (N-K) 로 구하면 된다. 뒤에서부터 이터레이션 하면서 총합과 최솟값을 갱신하면 된다. 시간복잡도는 O(N)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15485?rev=1690117462&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-23T13:04:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>a^ib^jc^k</title>
        <link>https://teferi.net/ps/problems/boj/15485?rev=1690117462&amp;do=diff</link>
        <description>a^ib^jc^k

풀이

	*  거의 비슷한 문제를 많이 봤던것 같은 느낌의 DP.
	*  dp_a[i], dp_b[i], dp_c[i] 를 S[:i+1]안에 포함된 $a^i$, $a^ib^j$, $a^ib^jc^k$ 의 갯수라고 각각 정의하자
	*  S[i]=='a' 라면 S[:i+1]에 있는 $a^i$들은 S[:i]안에 있었던 $a^i$$a^i$$b^i$$b^i$$b^i$$a^i$</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15486?rev=1644077808&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-05T16:16:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>퇴사 2</title>
        <link>https://teferi.net/ps/problems/boj/15486?rev=1644077808&amp;do=diff</link>
        <description>퇴사 2

풀이

	*  퇴사에서 n의 범위를 늘린 버전. 풀이는 그쪽을 참고.

코드



boj ps:problems:boj:실버_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15553?rev=1740840396&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-01T14:46:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>난로</title>
        <link>https://teferi.net/ps/problems/boj/15553?rev=1740840396&amp;do=diff</link>
        <description>난로

풀이

	*  꺼져있는 시간을 최대로 하면, 켜져있는 시간은 최소가 된다. 켜져있는 K개의 구간을 찾는것보다 꺼져있는 K-1개의 구간을 찾는 것이 더 쉽다. 
	*  꺼져있는 구간은, 첫번째 친구가 온 시점부터 마지막 친구가 가는 시점 사이에 총 K-1번이 있을 수 있다. 꺼져있는 구간이 될 수 있는 후보들은, i번째 친구가 나가는 시점부터 i+1번 친구가 들어오는 시점이므로, 총 N-1개의 구간이다. 이 N-1개의 구간중 가장 긴 구간 K-1개를 찾아서 그 시간동안 촛불을 꺼두면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15560?rev=1619795782&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:16:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 최대? 1</title>
        <link>https://teferi.net/ps/problems/boj/15560?rev=1619795782&amp;do=diff</link>
        <description>구간 합 최대? 1

풀이

	*  구간 합 최대? 2의 쉬운 버전. n과 q의 범위가 10^5에서 10^3으로 줄었다.
	*  세그먼트 트리를 이용해서 O(n+qlogn)에 해결하는 정해는 구간 합 최대? 2를 참조. 코드도 그대로 복붙했다.
	*  다만 문제에서 원래 의도한 풀이는, 그냥 K'_i = U*K_i+V로 치환하는 테크닉을 적용한 이후에, 매 쿼리마다 구간에서 최대 부분합을 구하는 것이었을것 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15561?rev=1619795774&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:16:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구간 합 최대? 2</title>
        <link>https://teferi.net/ps/problems/boj/15561?rev=1619795774&amp;do=diff</link>
        <description>구간 합 최대? 2

풀이

	*  쿼리에서 구하는 값이 단순한 최대 부분합이 아니라, 부분합을 포함하는 복잡한 형태의 수식인 것 같아 보인다. 그러나 K'_i = U * K_i + V 로 치환하면 쿼리는 max(K'_i + ... + K'_j - V) = max(K'_i +</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15596?rev=1636960948&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T07:22:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정수 N개의 합</title>
        <link>https://teferi.net/ps/problems/boj/15596?rev=1636960948&amp;do=diff</link>
        <description>정수 N개의 합

풀이

	*  처음으로 풀어본 '함수 구현' 스타일의 문제
	*  구현 자체는 그냥 시키는 대로 함수만 짜면 된다. 파이썬에서는 합을 구하는 sum 함수가 이미 있으므로, 함수안에서 sum을 호출하면 끝이고, 아니면 그냥</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15600?rev=1687275086&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-20T15:31:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Boss Battle</title>
        <link>https://teferi.net/ps/problems/boj/15600?rev=1687275086&amp;do=diff</link>
        <description>Boss Battle

풀이

	*  보스의 위치의 후보를 연속된 점들이 되도록 유지하자.
	*  폭탄을 던지면 보스의 위치의 후보들중 3군데를 체크할수 있다. 폭탄을 던져도 위치의 후보가 연속되게 유지 하려면, 폭탄은 위치 후보중 끝에서 두번째에 던저야 한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15645?rev=1639231870&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-11T14:11:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>내려가기 2</title>
        <link>https://teferi.net/ps/problems/boj/15645?rev=1639231870&amp;do=diff</link>
        <description>내려가기 2

풀이

	*  기초적인 DP 문제.
	*  3*N 크기의 dp 테이블을 채워 나가면 된다. 시간 복잡도는 O(n)
	*  슬라이딩 윈도우 기법을 적용하는 것도 가능하고 아래 코드도 그렇게 작성된 코드이지만, 이 문제에서는 굳이 안쓰더라도 상관은 없다. 슬라이딩 윈도우를 반드시 사용해야만 풀리도록 만든 문제는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15648?rev=1658856169&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-26T17:22:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>추출하는 폴도 바리스타입니다</title>
        <link>https://teferi.net/ps/problems/boj/15648?rev=1658856169&amp;do=diff</link>
        <description>추출하는 폴도 바리스타입니다

풀이

	*  DP형태로 점화식은 쉽게 세울수 있다. $ dp[i] = max_{j\in{P_i}}{dp[j]} + 1 $ 과 같은 형태이다. P_i는 S[i] 바로 앞에 올수있는 S[j]들의 인덱스들이다. 수식으로는 이런식..P_i = {j | j &lt;i and |S[j] - S[i]| ≤ d or S[j] ≡ S[i]}</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15678?rev=1656774820&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-02T15:13:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연세워터파크</title>
        <link>https://teferi.net/ps/problems/boj/15678?rev=1656774820&amp;do=diff</link>
        <description>연세워터파크

풀이

	*  문제 조건은 왼쪽과 오른쪽으로 점프가 가능하지만, 한쪽 방향으로만 점프해서 이동해도 최적값을 찾을수 있다는 것은 쉽게 떠올릴수 있다. 
	*  그러면 왼쪽에서 오른쪽으로만 이동한다고 가정하고 최대값을 dp로 계산하자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15686?rev=1633708301&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-08T15:51:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>치킨 배달</title>
        <link>https://teferi.net/ps/problems/boj/15686?rev=1633708301&amp;do=diff</link>
        <description>치킨 배달

풀이

	*  치킨집의 갯수가 최대 13이다. 그래서 그중에서 M개의 치킨집을 골라내는 모든 조합의 갯수는 최대 C(13,6) = 1716으로 매우 작으므로, 일일히 다 따져봐도 무리가 없다,
		*  최대 M개의 치킨집을 남길 수 있을때, M보다 작은 갯수의 치킨집을 남기는 것은 고려할 필요가 없다. 치킨집을 줄여서 치킨거리가 감소되는 것은 불가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15688?rev=1630398214&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-08-31T08:23:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수 정렬하기 5</title>
        <link>https://teferi.net/ps/problems/boj/15688?rev=1630398214&amp;do=diff</link>
        <description>수 정렬하기 5

풀이

	*  그냥 입력받고 정렬해서 출력하는 것이 전부인 문제고, 수의 개수가 최대 백만, 그리고 시간 누적 방식으로 채점된다
	*  수 정렬하기 2과 수의 범위까지 동일한 문제이고, 차이점은 시간 누적 방식으로 채점한다는 것과, 중복된 수가 등장하는지 여부의 차이가 있기는 한데, 그냥 O(nlogn)의 내장 소팅으로 구현할 경우에는 풀이에 아무런 차이가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15717?rev=1627746637&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-31T15:50:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>떡파이어</title>
        <link>https://teferi.net/ps/problems/boj/15717?rev=1627746637&amp;do=diff</link>
        <description>떡파이어

풀이

	*  식만 잘 정리하면 된다.
	*  간단하게 재귀형태로 정리하면, 떡 n개를 며칠동안 나눠먹는 방법 f(n)은 {첫째날에 1개를 먹는 경우} + {첫째날에 2개를 먹는 경우} + ... + {첫째날에 n개를 먹는 경우} 로 나눌수 있다. 첫째날에 k개를 먹는 경우는 나머지 날 동안 n-k를 나눠먹는 방법 f(n-k)이므로. f(n) = f(n-1) + f(n-2) +</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15718?rev=1652334751&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-12T05:52:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌아온 떡파이어</title>
        <link>https://teferi.net/ps/problems/boj/15718?rev=1652334751&amp;do=diff</link>
        <description>돌아온 떡파이어

풀이

	*  문제에서 요구하는 것을 식으로 정리하는 것은 간단하다. N개의 떡을 M-1 일 동안 기본 한개씩 먹는 것은 고정이고, 나머지 N-(M-1)개의 떡을 M-1 일로 나누는 방법의 가짓수를 구하면 되니까, C(N-(M-1)+(M-1)-1, M-1) = C(N-1, M-1)이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15748?rev=1649866346&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T16:12:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rest Stops</title>
        <link>https://teferi.net/ps/problems/boj/15748?rev=1649866346&amp;do=diff</link>
        <description>Rest Stops

풀이

	*  그리디하게 풀리는 문제. 
	*  tastiness 가 가장 높은 지점에서 가능한 오랫동안 먹는것이 최적이다. x[i]&lt;x[j] 이고, c[i]&lt;c[j] 라면 i번째 stop에서 쉬지 않고, j번째 stop에서 쉬는 것이 최적이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15782?rev=1620231255&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:14:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Calculate! 2</title>
        <link>https://teferi.net/ps/problems/boj/15782?rev=1620231255&amp;do=diff</link>
        <description>Calculate! 2

풀이

	*  XOR 문제에 오일러 투어 테크닉을 결합한 문제.
	*  그냥 오일러 투어 테크닉으로 트리를 편 뒤에, 구간 xor 업데이트/xor 쿼리를 처리해주기만 하면 되는 문제라서 특별히 언급할 것이 없다.
	*  오일러 트리 테크닉과 구간 xor 업데이트/xor 쿼리 는 각각 링크를 참고. 이 문제도</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15783?rev=1668654816&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-17T03:13:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>세진 바이러스</title>
        <link>https://teferi.net/ps/problems/boj/15783?rev=1668654816&amp;do=diff</link>
        <description>세진 바이러스

풀이

	*  강한 연결 요소 (Strongly Connected Component / SCC)를 활용하는 기본 문제. Condensation graph를 만들고 소스 노드들에 바이러스를 뿌리면, 모든 노드들로 전달시킬수 있다. 
	*  시간복잡도는 O(V+E).

코드



	*  Dependency: teflib.graph.condensation_graph

boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15829?rev=1634135900&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-13T14:38:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Hashing</title>
        <link>https://teferi.net/ps/problems/boj/15829?rev=1634135900&amp;do=diff</link>
        <description>Hashing

풀이

	*  그냥 시키는대로 구현하면 되는 문제. 설명할 것이 따로 없다.
	*  시간 복잡도는 O(n)

코드



boj ps:problems:boj:브론즈_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15880?rev=1668144956&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-11T05:35:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Turf Wars</title>
        <link>https://teferi.net/ps/problems/boj/15880?rev=1668144956&amp;do=diff</link>
        <description>Turf Wars

풀이

	*  각 영역을 boolean 변수로 만들자. 변수의 값은 그 영역을 포기하면 True가 되고, 포기 안하면 False를 갖도록 하자.
	*  이제 변수들간의 관계를 2-SAT으로 모델링할수 있다.
	*  영역 x와 영역 y가 겹친다면, 둘중 한개 이상은 포기되어야 한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15897?rev=1623252769&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-09T15:32:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>잘못 구현한 에라토스테네스의 체</title>
        <link>https://teferi.net/ps/problems/boj/15897?rev=1623252769&amp;do=diff</link>
        <description>잘못 구현한 에라토스테네스의 체

풀이

	*  소스코드를 훑어보면 각 i에 대해서, 6번줄의 실행횟수는 1 + (n-1)/i 가 된다는 것을 확인할 수 있다.
	*  따라서 전체 실행 횟수는, m=n-1이라고 썼을때, n + ([m/1] + [m/2] +</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15898?rev=1740297838&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-23T08:03:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피아의 아틀리에 ~신비한 대회의 연금술사~</title>
        <link>https://teferi.net/ps/problems/boj/15898?rev=1740297838&amp;do=diff</link>
        <description>피아의 아틀리에 ~신비한 대회의 연금술사~

풀이

	*  기본적으로는 모든 경우의 수를 다 시도해보는 것 밖에 다른 방법은 없다. 구현이 좀 귀찮지만, 차근차근 하면 어렵지는 않다.
	*  어려운 점은, 파이썬 기준으로 시간이 꽤나 빡빡하다는 것. 순서있게 재료 3개를 고르는 경우의 수는 P(n,3)이고, 각 재료마다 4가지의 로테이션과 4가지의 시작 위치를 가지므로, 총 P(n,3)*(4*4)^3 번의 시뮬레이션을 해야 한다. n=10일때에 이 값은 2,949,120 이다. 매 시뮬레이션마다, 25칸에 대해서 업데이트를 3회 해주고, 25칸에 대해서 점수를 계산해야 하므로, 이 연산량을 대략 O(100) 이라고 하면, 총 연산횟수가 대략 3억정도가 되는데, 파이썬 기준으로는 이 연산을 추가시간 없는 3초에 완료하는게 상당히 빡빡해진다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15899?rev=1621267277&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-17T16:01:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리와 색깔</title>
        <link>https://teferi.net/ps/problems/boj/15899?rev=1621267277&amp;do=diff</link>
        <description>트리와 색깔

풀이

	*  오일러 경로 테크닉과 구간 Rank 쿼리를 결합한 문제.
	*  기본적인 풀이 방식을 결합해서 풀면 끝이다. 오일러 경로 테크닉에 O(N). 구간 Rank 쿼리를 오프라인 쿼리로 처리해서 푸는 데에 O((N+M)log(C)). 합치면</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/15979?rev=1654156880&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-02T08:01:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스승님 찾기</title>
        <link>https://teferi.net/ps/problems/boj/15979?rev=1654156880&amp;do=diff</link>
        <description>스승님 찾기

풀이

	*  (0,0)에서 (M,N)이 보인다는 것은 M과 N이 서로소라는 것.
	*  따라서 gcd(M,N)이 1이면 한번에 순간이동 가능하다.
	*  서로소가 아닐 경우에는 이렇게 두번만에 이동하는 것이 가능하다. (1,N-1), (M-1,1) 이렇게 두번 이동하는 셈인데 둘다 서로소니까 항상 이동 가능.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16139?rev=1668736606&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:56:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>인간-컴퓨터 상호작용</title>
        <link>https://teferi.net/ps/problems/boj/16139?rev=1668736606&amp;do=diff</link>
        <description>인간-컴퓨터 상호작용

풀이

	*  부분합 쿼리 문제. 알파벳별로 누적합을 각각 만들어주고 쿼리에서 물어보는 알파벳의 누적합에서 계산해주면 된다.
	*  누적합을 최대 26개 만들어야 하니까 O(|S|*26)이 걸리고, 쿼리는 각 쿼리당 O(1) 에 처리가능하다. 알파벳의 갯수 26을 상수로 보면, O(|S| + q).</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16142?rev=1689172182&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-12T14:29:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>게임이론</title>
        <link>https://teferi.net/ps/problems/boj/16142?rev=1689172182&amp;do=diff</link>
        <description>게임이론

풀이

	*  보통 이런 게임에서는, 상대에게 최대한 적은 선택지를 넘겨주는것이 최선이 되는 경우가 종종 있다. 이 게임에서는 돌을 1개만 남기고 넘겨주면, 상대는 그 한개를 제거하는 선택지밖에 남지 않는다. 이 아이디어를 염두에 두고 생각하면서 전략을 세워보자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16153?rev=1632231263&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-09-21T13:34:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A → B</title>
        <link>https://teferi.net/ps/problems/boj/16153?rev=1632231263&amp;do=diff</link>
        <description>A → B

풀이

	*  현재 수에서 만들수 있는 다음 수가 2가지이므로, n번 연산으로 만들 수 있는 상태들을 큐에 저장해서 n+1번에 만들수 있는 수들을 찾는것을 반복하는 방법, 다시말하면 BFS를 사용해야 할 것 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16163?rev=1626014928&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-11T14:48:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>#15164번_제보</title>
        <link>https://teferi.net/ps/problems/boj/16163?rev=1626014928&amp;do=diff</link>
        <description>#15164번_제보

풀이

	*  문제 설명을 보면 15927번과 16161번 문제에 대해 언급을 하고 있긴 한데.. 제목에서 언급된 15164번은 이 문제와는 전혀 관계가 없는 문제이다.. 어떤 사연인지 모르겠다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16171?rev=1743688988&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-03T14:03:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나는 친구가 적다 (Small)</title>
        <link>https://teferi.net/ps/problems/boj/16171?rev=1743688988&amp;do=diff</link>
        <description>나는 친구가 적다 (Small)

풀이

	*  문제에서 시키는 대로, 문자열에서 숫자를 제거하고, 부분문자열의 포함 여부를 in 연산자를 사용해서 확인하면 된다 (파이썬 기준)
	*  in 연산자로 부분분자열의 포함여부를 확인하는 것은 O(n)에 동작하기 때문에, 범위가 커진</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16172?rev=1743688776&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-03T13:59:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나는 친구가 적다 (Large)</title>
        <link>https://teferi.net/ps/problems/boj/16172?rev=1743688776&amp;do=diff</link>
        <description>나는 친구가 적다 (Large)

풀이

	*  문제의 요구사항은 간단하다. 문자열에서 숫자를 지우는 것은 너무 간단해서 신경쓸 필요가 없다고 치면, 결국은 어떤 문자열이 특정한 부분문자열을 포함하는지를 찾는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16187?rev=1671199671&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T14:07:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Game on Plane</title>
        <link>https://teferi.net/ps/problems/boj/16187?rev=1671199671&amp;do=diff</link>
        <description>Game on Plane

풀이

	*  처음에는 문제 이해를 잘못해서 시간을 소비했고, 문제 이해를 한 뒤에도 풀이가 바로 생각 안나서 또 시간을 소비했다. 통과된 이후에 Octal game 이라는 관련 이론에 대해서 공부한 시간은 별개..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16208?rev=1772637238&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T15:13:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>귀찮음</title>
        <link>https://teferi.net/ps/problems/boj/16208?rev=1772637238&amp;do=diff</link>
        <description>귀찮음

풀이

	*  1개에서 시작해서 n개로 자르는 문제이지만, n개에서 시작해서 1개로 합치는 문제로 바꿔도 달라지는 것은 없다.
	*  이렇게 바꾸고 나면  슬라임 합치기과 동일한 문제가 된다. 어떤 순서로 합치든 총 비용은 동일하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16219?rev=1770560085&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-08T14:14:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정렬하기</title>
        <link>https://teferi.net/ps/problems/boj/16219?rev=1770560085&amp;do=diff</link>
        <description>정렬하기

풀이

	*  처음에 정렬된 상태면 0라운드만에 끝나니까 더 생각할 필요가 없다. 
	*  처음에 정렬된 상태가 아니라면, 여기에서 에르맥은 한 번에 정렬이 될 수 없는 상태로 바꿀수 있다. 이후에는 아이잔이 어떻게 두 수를 바꾸어도, 에르맥이 똑같은 두 수를 다시 바꾸면 원래대로 돌아가므로 무한히 끝나지 않는다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16221?rev=1618403524&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-14T12:32:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>모독</title>
        <link>https://teferi.net/ps/problems/boj/16221?rev=1618403524&amp;do=diff</link>
        <description>모독

풀이

	*  A[i] = 생명점이 i인 하수인의 갯수 로 정의되는 배열 A를 생각하자.
	*  구해야 하는 것은, A[i]=0인 i의 최소값을 x라고 할때, sum(A[1:x])를 구하는 것이고, 이것은 세그먼트 트리를 이용해서 쉽게 구현 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16229?rev=1671178553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-16T08:15:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>반복 패턴</title>
        <link>https://teferi.net/ps/problems/boj/16229?rev=1671178553&amp;do=diff</link>
        <description>반복 패턴

풀이

	*  반복패턴의 모든 후보를 찾는 것은 모든 Border을 찾는 것과 동일하고, 이것은 fail함수나 z배열을 이용해서 O(N)에 구할수 있다. 
		*  반복 찾기 참고
		*  fail 함수를 쓰는것이 z배열을 쓰는 것보다 좀더 빠르다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16288?rev=1769043464&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T00:57:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Passport Control</title>
        <link>https://teferi.net/ps/problems/boj/16288?rev=1769043464&amp;do=diff</link>
        <description>Passport Control

풀이

	*  pi기준으로 번호를 바꿔서 수열을 만들면, 결국 하려는 것은 수열을 여러개의 큐에 나눠 담았다가 다시 합치는 방식으로 정렬시키는 것이다. 
		*  나연 정렬에서 스택 대신 큐를 사용한 버전이라 생각하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16314?rev=1678675234&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-13T02:40:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Kingpin Escape</title>
        <link>https://teferi.net/ps/problems/boj/16314?rev=1678675234&amp;do=diff</link>
        <description>Kingpin Escape

풀이

	*  문제를 해석하자. 만들어야 하는 그래프는, 엣지가 하나 제거되어도 모든 노드들이 연결되어 있는 그래프, 즉 Bi-Edge-Connected graph이다. 주어진 트리에 최소 갯수의 엣지를 추가해서, Bi-Edge-Connected graph 가 되도록 만들고 싶다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16367?rev=1667835758&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-07T15:42:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>TV Show Game</title>
        <link>https://teferi.net/ps/problems/boj/16367?rev=1667835758&amp;do=diff</link>
        <description>TV Show Game

풀이

	*  At-most-one 조건을 사용하는 2-SAT문제
	*  x,y,z 중에서 2개 이상이 True이다 &lt;=&gt; 1개 이하가 False이다. &lt;=&gt; ~x,~y,~z 중 최대 1개가 True이다. 이렇게 at-most-one 형태로 바꿔줄수 있다. at-most-one을 인코딩할때는 변수가 3개뿐이므로 그냥 pairwise로 처리하면 된다. 사실 이렇게 단계를 거쳐서 생각하지 않고 그냥 어떤 페어를 잡아도 1개 이상은 True이므로 페어마다 or절을 만든다고 심플하게 생각해도 되긴 한다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16398?rev=1635050764&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-24T04:46:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행성 연결</title>
        <link>https://teferi.net/ps/problems/boj/16398?rev=1635050764&amp;do=diff</link>
        <description>행성 연결

풀이

	*  기본적인 최소 신장 트리 (Minimum Spanning Tree / MST) 문제. 그냥 알고리즘 적용해서 계산하면 된다
	*  주어진 그래프가 완전 그래프인만큼, 일반적으로 사용하는 O(ElogV)의 크루스칼 알고리즘보다 O(V^2)의 프림 알고리즘을 쓰는 것이 더 효율적이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16401?rev=1649861405&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-04-13T14:50:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>과자 나눠주기</title>
        <link>https://teferi.net/ps/problems/boj/16401?rev=1649861405&amp;do=diff</link>
        <description>과자 나눠주기

풀이

	*  기본적인 이진 탐색 문제
	*  나눠줄 조각의 길이를 l이라고 하면, 만들어질수 있는 l짜리 조각의 갯수가 M이상이 되는 최대의 l을 구하면 된다.
	*  주어진 l에 대해서 조각의 갯수를 구하는 것은 O(N). 이진탐색의 범위는 1~max(L)이므로, 총 시간 복잡도는 O(N*log(max(L)))이 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16404?rev=1619789782&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T13:36:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>주식회사 승범이네</title>
        <link>https://teferi.net/ps/problems/boj/16404?rev=1619789782&amp;do=diff</link>
        <description>주식회사 승범이네

풀이

	*  오일러 경로 테크닉을 적용한 뒤, 구간합 업데이트 + 포인트 쿼리를 처리하는 문제.
	*  서브트리의 루트도 업데이트 된다는 점만 제외하면 자동차 공장과 동일한 문제이므로, 자세한 풀이는 그쪽을 참조.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16440?rev=1733026760&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-01T04:19:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제이크와 케이크</title>
        <link>https://teferi.net/ps/problems/boj/16440?rev=1733026760&amp;do=diff</link>
        <description>제이크와 케이크

풀이

	*  Necklace splitting problem의 특수한 경우
	*  최대 2번의 칼질로 원하는 분할이 가능하다. 분할 위치는 슬라이딩 윈도우로 찾으면 된다. 시간복잡도는 O(n)

코드



boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16443?rev=1689176525&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-12T15:42:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Bolinhas de Gude</title>
        <link>https://teferi.net/ps/problems/boj/16443?rev=1689176525&amp;do=diff</link>
        <description>Bolinhas de Gude

풀이

	*  체스 연습와 입출력을 제외하고는 거의 동일한 문제. 풀이는 그쪽 참고

코드



boj ps:problems:boj:플래티넘_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16465?rev=1692606916&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-21T08:35:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Bookend</title>
        <link>https://teferi.net/ps/problems/boj/16465?rev=1692606916&amp;do=diff</link>
        <description>Bookend

풀이

	*  문제를 읽으면서 혼란에 빠졌다. 책을 모두 한쪽 벽에 붙이면 북엔드는 최대 1개면 충분할거 같은데 뭐를 잘못 이해한거지? 최대 1개로 충분한게 맞다면 골드일리가 없는데...</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16496?rev=1622558444&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-01T14:40:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>큰 수 만들기</title>
        <link>https://teferi.net/ps/problems/boj/16496?rev=1622558444&amp;do=diff</link>
        <description>큰 수 만들기

풀이

	*  프로그래머즈의 가장 큰 수 과 동일한 문제이다. 
	*  하지만 프로그래머즈에서는 레벨2로 책정되어 있는 반면, BOJ에서는 플래티넘으로 책정되어있다. 투표 내역에는 무려 다이아몬드로 투표를 한 의견도 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16507?rev=1654010786&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T15:26:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>어두운 건 무서워</title>
        <link>https://teferi.net/ps/problems/boj/16507?rev=1654010786&amp;do=diff</link>
        <description>어두운 건 무서워

풀이

	*  2차원 구간의 평균을 구하는 것은, 단순하게 2차원 구간합을 구하고 크기로 나눠주면 된다.
	*  2차원 구간합은 2차원 누적합을 이용해서 O(1)에 구할수 있다. 구간 합 구하기 5 참고.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16544?rev=1702217910&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-10T14:18:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Colorgraph</title>
        <link>https://teferi.net/ps/problems/boj/16544?rev=1702217910&amp;do=diff</link>
        <description>Colorgraph

풀이

	*  Global Minimum Cut를 이용해서 계산하는 문제이긴 한데, 케이스워크가 상당히 복잡한 편이다. 하나씩 따져보자.
	*  먼저 N이 3인 경우와 N이 4이상인 경우로 구분하자.
	*  N=3 일때에는, 블루/레드가 모두 끊겨있거나, 블루/레드가 모두 연결되어있는 경우는 불가능하다. 만들수 있는 상태는 (1,0)이나 (0,1) 뿐이다. N이 작으므로, 만드는 방법은 간단히 찾을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16563?rev=1708657448&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-23T03:04:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>어려운 소인수분해</title>
        <link>https://teferi.net/ps/problems/boj/16563?rev=1708657448&amp;do=diff</link>
        <description>어려운 소인수분해

풀이

	*  소인수분해 (Prime Factorization)에서 설명한것처럼, n이하의 모든 수에 대해서 최소인수를 계산해놓으면, n이하의 임의의 수를 O({소인수갯수}) 로 소인수분해할수 있다.
	*  모든 수의 최소인수를 계산하는 것은 에라토스테네스의 체를 변형해서 O(nloglogn)에 구할수도 있고, linear sieve를 이용해서 O(n)에 구할수도 있다. 시간복잡도는 거의 비슷하지만, 최적화를 최대한 열심히 했을때 실행 속도는 linear sieve쪽이 좀더 빨랐다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16565?rev=1634741477&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-20T14:51:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N포커</title>
        <link>https://teferi.net/ps/problems/boj/16565?rev=1634741477&amp;do=diff</link>
        <description>N포커

풀이

	*  N장중에서 포카드가 1종류 이상 포함된 경우의 수를 구하면 된다.
	*  포함배제의 원리를 이용하면, 아래처럼 계산하면 된다..
		*  {1포카드가 포함된 경우}, ... , {13포카드가 포함된 경우} 를 더하고</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16583?rev=1677482358&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-27T07:19:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Boomerangs</title>
        <link>https://teferi.net/ps/problems/boj/16583?rev=1677482358&amp;do=diff</link>
        <description>Boomerangs

풀이

	*  잘 관찰해보자.. 케이스를 그려보면서 생각해보면 몇가지 기준들이 떠오른다. 가장 기본적인것은 리프노드에 붙은 엣지부터 부메랑에 추가시켜야 한다는 것이다. 그리고 어떤 엣지를 부메랑에 사용하기로 했다면, 그 엣지를 제거한 뒤에 만들어지는 리프노드를 또다시 우선적으로 고려해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16705?rev=1688481386&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-04T14:36:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Game of Stones</title>
        <link>https://teferi.net/ps/problems/boj/16705?rev=1688481386&amp;do=diff</link>
        <description>Game of Stones

풀이

	*  경우를 나눠서 생각해봐야 한다. 우선 가장 돌이 많은 파일의 돌 갯수를 m이라고 하자.
	*  A와 B가 모두 m이상이라면, 누구든 하나의 파일에서 원하는 만큼 돌을 제거할수 있다. 이것은 그냥 제약 없는 님게임과 똑같아지므로, 모든 파일들의 돌 갯수를 xor한 것이 그런디 수가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16713?rev=1654010828&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T15:27:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Generic Queries</title>
        <link>https://teferi.net/ps/problems/boj/16713?rev=1654010828&amp;do=diff</link>
        <description>Generic Queries

풀이

	*  누적 합을 XOR에 적용한 문제
	*  그냥 구간 합 구하기 4의 XOR 버전이라고 보면 된다. 코드도 거의 동일하다.
	*  누적 XOR을 O(n)에 만들면, m개의 쿼리를 각각 O(1)에 해결 가능. 총 시간복잡도는 O(n+m)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16724?rev=1637255179&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-18T17:06:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피리 부는 사나이</title>
        <link>https://teferi.net/ps/problems/boj/16724?rev=1637255179&amp;do=diff</link>
        <description>피리 부는 사나이

풀이

	*  그래프로 생각하면, 모든 노드는 outdegree가 1이라서, 어디서 출발하든지 결국은 어떤 사이클에서 끝나게 되어있다. 사이클마다 safe존을 하나씩 설치하면 끝이다. 결국 safe존의 최소 갯수 = 커넥티드 컴포넌트의 수 = 사이클의 갯수이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16725?rev=1775731792&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-09T10:49:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>다항 계수</title>
        <link>https://teferi.net/ps/problems/boj/16725?rev=1775731792&amp;do=diff</link>
        <description>다항 계수

풀이

	*  문제를 바꿔쓰면, [0..n] 범위의 자연수 m개로 이루어진 튜플 중에서 합이 k가 되는 것의 개수를 세는 문제이다.
	*  공식 풀이는 O(m*k)의 DP 이지만, 조합론적 방법으로 O(m+k)에 푸는 것이 가능하다. 풀이는</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16831?rev=1688569982&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-05T15:13:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Nim without Zero</title>
        <link>https://teferi.net/ps/problems/boj/16831?rev=1688569982&amp;do=diff</link>
        <description>Nim without Zero

풀이

	*  님 게임의 변형이다. 우선 일반 님게임에서 승리조건이 왜 전체를 xor한 값이 0이 아닌지를 이해하고 있어야한다.
	*  이 게임에서의 패배포지션은 가능한 행동이 xor값을 0으로 바꾸는 것밖에 없는 상태이다. 어떠한 파일이든 돌이 2개 이상이 있다면, 돌을 1개 빼냐 2개빼냐에 따라서 다음 xor값이 달라지게 되므로, 적어도 한가지는 xor값을 0이 아닌 상태로 만들수 있다. 그렇다면 패배포지션은 파일들에 돌이 1개 또는 0개밖에 없으면서, 돌이 1개인 파일이 홀수개인 상태이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16877?rev=1654705778&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-08T16:29:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>핌버</title>
        <link>https://teferi.net/ps/problems/boj/16877?rev=1654705778&amp;do=diff</link>
        <description>핌버

풀이

	*  님 게임의 변형. 스프라그-그런디 정리를 적용해서 풀면 된다.
	*  돌 갯수에 따른 그런디수는 클로즈드 폼으로 식이 정리되지 않는다.. DP형태로 일일히 계산해줘야 한다.
	*  돌 n-1개까지의 그런디수가 구해져있을때, 돌 n개에 대한 그런디 수를 구하기 위해서는, 여기서 n-1, n-2, n-3, n-5, n-8,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16878?rev=1657178157&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-07T07:15:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>궁전</title>
        <link>https://teferi.net/ps/problems/boj/16878?rev=1657178157&amp;do=diff</link>
        <description>궁전

풀이

	*  Hertzsprung's problem이라는 문제이다.
	*  점화식을 직접 유도해내는 것에는 실패했고.. 이 문제에 대한 점화식을 검색을 통해 알아내어서 그것으로 구현했다. 자세한 내용은 링크 참조.

코드

(다이아몬드 이상은 코드 첨부 생략)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16879?rev=1656942095&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-04T13:41:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>궁전 게임</title>
        <link>https://teferi.net/ps/problems/boj/16879?rev=1656942095&amp;do=diff</link>
        <description>궁전 게임

풀이

	*  궁전들이 겹쳐도 상관 없기때문에, 궁전이 한개만 올라가있는 체스판 N개가 독립적으로 있는 상황으로 생각해도 된다. 그러면 스프라그-그런디 정리를 이용해서 궁전 위치에 따른 그런디 수를 구한 다음에 모두 xor해주면 끝.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16880?rev=1656943332&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-04T14:02:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>룩, 비숍, 킹, 나이트, 궁전 게임</title>
        <link>https://teferi.net/ps/problems/boj/16880?rev=1656943332&amp;do=diff</link>
        <description>룩, 비숍, 킹, 나이트, 궁전 게임

풀이

	*  궁전 게임의 확장 문제. 똑같이 스프라그-그런디 정리에 기반해서, 각 피스에 대해 그런디 수를 구하고 모두  xor해서 전체 상태에 대한 그런디수를 구해주면 된다.
	*  다만 궁전 게임 에서 궁전이 x,y 좌표에 있을때에 그런디 수를 바로 계산할수 있는 공식을 찾았던것 처럼, 룩, 비숍, 킹, 나이트에 대해서도 똑같이 공식을 찾아줘야 한다. 다행히 궁전보다는 쉽다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16882?rev=1687017064&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-17T15:51:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카드 게임</title>
        <link>https://teferi.net/ps/problems/boj/16882?rev=1687017064&amp;do=diff</link>
        <description>카드 게임

풀이

	*  가장 큰 숫자가 1개밖에 없으면, 그 숫자를 부름으로써 모든 카드를 제거할수 있다. 따라서 선공이 승리할 수 있다.
	*  가장 큰 숫자가 홀수개 있더라도, 가장 큰 숫자를 불러서 가장 큰 숫자만 짝수개 남길수 있다. 이후, 서로 그 숫자를 부르는 것을 반복하면 마지막에 숫자를 부르는 것은 선공의 차례가 된다. 역시 선공의 승리.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16895?rev=1657680470&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-07-13T02:47:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>님 게임 3</title>
        <link>https://teferi.net/ps/problems/boj/16895?rev=1657680470&amp;do=diff</link>
        <description>님 게임 3

풀이

	*  스프라그-그런디 정리 를 이용하는 기본적인 문제. Nim와도 동일한 문제.
	*  정리에 따르면, 그런디 수가 0이 아니면 선공이 무조건 이길수 있는 방법이 존재하고, 그 방법은 그런디 수를 0으로 만드는 행동을 하는 것이다. 여기서도 그런디수를 0으로 만들수 있는 행동의 갯수를 구하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16956?rev=1663829645&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-22T06:54:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>늑대와 양</title>
        <link>https://teferi.net/ps/problems/boj/16956?rev=1663829645&amp;do=diff</link>
        <description>늑대와 양

풀이

	*  문제의 마지막 부분에 한번 더 강조하고 있지만, 최소 갯수로 울타리를 설치할 필요는 없다.
	*  우선 늑대와 양이 인접한 칸에 위치한 경우에는 울타리로 둘을 분리할수 있다. 역으로 그렇게 위치한 부분이 없다면 울타리로 분리가 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16975?rev=1673943032&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-17T08:10:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 21</title>
        <link>https://teferi.net/ps/problems/boj/16975?rev=1673943032&amp;do=diff</link>
        <description>수열과 쿼리 21

풀이

	*  구간 업데이트와 포인트 쿼리를 요구하는 문제이다.
	*  lazy propagation을 지원하는 세그먼트 트리를 이용해서 푸는 방법도 있지만, 원소의 값을 구간합으로 처리하는 테크닉을 사용하면, 포인트 업데이트와 구간합 쿼리 문제로 변환할 수 있다. 이렇게 푸는 쪽이 단순한 펜윅 트리만을 이용해서 풀 수 있으므로 더 간단하고 빠르게 해결 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16978?rev=1617118470&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-30T15:34:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 22</title>
        <link>https://teferi.net/ps/problems/boj/16978?rev=1617118470&amp;do=diff</link>
        <description>수열과 쿼리 22

풀이

	*  포인트 업데이트 + 구간합 쿼리를 처리하는 기본 문제이다.
	*  다만, 순서대로 쿼리를 처리해서는 해결이 안되기 때문에, 오프라인 쿼리 처리를 강제하는 문제이다
		*  (뭐.. 퍼시스턴트 세그먼트 트리를 쓴다면 굳이 온라인으로 못할 것도 없긴 하다)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/16993?rev=1619795766&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:16:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연속합과 쿼리</title>
        <link>https://teferi.net/ps/problems/boj/16993?rev=1619795766&amp;do=diff</link>
        <description>연속합과 쿼리

풀이

	*  구간내 최대 연속부분합 쿼리, 일명 '금광세그' 쿼리 문제.
	*  세그먼트 트리의 각 노드에 저장할 값과, 그 값을 합치는 방법이 조금 트리키하긴 하지만, 구현상으로는 Teferi library의 bottom-up 세그먼트 트리 구현체를 그대로 사용하는데에 아무 문제가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17069?rev=1634476306&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T13:11:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파이프 옮기기 2</title>
        <link>https://teferi.net/ps/problems/boj/17069?rev=1634476306&amp;do=diff</link>
        <description>파이프 옮기기 2

풀이

	*  파이프 옮기기 1에서 n의 크기만 늘린 문제. 풀이와 코드 모두 동일하다. 풀이는 파이프 옮기기 1 참조

코드



boj ps:problems:boj:골드_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17070?rev=1634476133&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T13:08:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파이프 옮기기 1</title>
        <link>https://teferi.net/ps/problems/boj/17070?rev=1634476133&amp;do=diff</link>
        <description>파이프 옮기기 1

풀이

	*  그리드의 한 모퉁이에서 대각선 모퉁이까지의 최단 이동 경로의 갯수를 세는 것은 2차원 DP의 대표적인 연습문제이다. 거기에서 약간의 변형을 추가한 문제.
		*  사실 이 문제는 n값이 작아서 그냥 그래프 탐색으로도 풀수 있기는 하다. n값을 늘린</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17080?rev=1686892953&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-16T05:22:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>결함 게임</title>
        <link>https://teferi.net/ps/problems/boj/17080?rev=1686892953&amp;do=diff</link>
        <description>결함 게임

풀이

	*  우선 돌을 더 올릴수 있는 돌탑을 활성화된 탑이라고 부르자. 활성화된 탑이 있을 때는 새로운 탑을 만들수 없으므로, 게임중의 어떤 상태에서도 활성화된 탑의 갯수는 1개 또는 0개만 있을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17098?rev=1705933987&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-22T14:33:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Boomerangs</title>
        <link>https://teferi.net/ps/problems/boj/17098?rev=1705933987&amp;do=diff</link>
        <description>Boomerangs

풀이

	*  연결된 엣지쌍들 ((u-v), (v-w)) 중에서 그 엣지 두개를 제거했을때 그래프를 분리시킬 수 있는 것의 갯수를 구하라는 문제.
	*  일단 엣지 하나가 단절선이라면 당연히 가능하다. 단절선에 해당하는 엣지 하나만 제거해도 그래프가 분리되기 때문이다. 이것을 세는것은, 각  단절선마다 단절선에 연결된 엣지의 수를 모두 더해준 다음에, 중복으로 카운트 된 단절선 두개가 붙어있는 쌍의 갯수를 빼주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17103?rev=1613304319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-14T12:05:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>골드바흐 파티션</title>
        <link>https://teferi.net/ps/problems/boj/17103?rev=1613304319&amp;do=diff</link>
        <description>골드바흐 파티션

풀이

	*  먼저 1,000,000 이하의 소수 목록을 미리 구해서 set에 저장해 둔다.
	*  그러면, 각각의 N에 대해서 합이 N이 되는 소수 쌍의 갯수를 찾는 것은, 모든 소수 Pi를 순회하면서 N-Pi가 소수 목록에 포함되는지를 체크해서 그 갯수를 세면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17104?rev=1617200143&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-31T14:15:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>골드바흐 파티션 2</title>
        <link>https://teferi.net/ps/problems/boj/17104?rev=1617200143&amp;do=diff</link>
        <description>골드바흐 파티션 2

	*  골드바흐 파티션에서 T가 100에서 100,000으로 늘어난 문제.

풀이

	*  골드바흐 파티션에서 했던 것처럼 쿼리마다 따로 파티션의 갯수를 찾으려 하지 말고, 그냥 한번에 모든 수에 대해서 파티션의 갯수를 미리 구해놓고, 쿼리마다 그 값을 출력하는 식으로 접근한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17114?rev=1627021359&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-23T06:22:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>하이퍼 토마토</title>
        <link>https://teferi.net/ps/problems/boj/17114?rev=1627021359&amp;do=diff</link>
        <description>하이퍼 토마토

풀이

	*  초끈이론의 영향을 받은 듯한 문제 설정이 충격적이지만, 결국은 토마토과 토마토의 단순한 확장. 똑같이 BFS로 풀면 된다. 시간 복잡도도 O(n)으로 동일하다 (n=셀의 갯수)
	*  물론 BFS 알고리즘은 똑같더라도, 2차원이나 3차원 공간에서 적용했던 것처럼 11차원 리스트를 11중 포문으로 서치할수는 없으니.. (코드가 지저분한 것을 넘어서 파이썬에서는 속도도 문제가 된다).. 효율적으로 좌표를 처리하는 방법이 필요하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17131?rev=1620232600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:36:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>여우가 정보섬에 올라온 이유</title>
        <link>https://teferi.net/ps/problems/boj/17131?rev=1620232600&amp;do=diff</link>
        <description>여우가 정보섬에 올라온 이유

풀이

	*  Inversion Counting의 활용 문제이다.
	*  s.x &lt; t.x &lt; u.x이고 s.y &gt; t.y &lt; u.y인 세 원소쌍을 찾는 문제인데, x를 기준으로 정렬시켜 처리하면 i&lt;j&lt;k 이면서 Ai&gt;Aj&gt;Ak 인 세 원소쌍을 찾았던</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17134?rev=1620232418&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-05T16:33:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>르모앙의 추측</title>
        <link>https://teferi.net/ps/problems/boj/17134?rev=1620232418&amp;do=diff</link>
        <description>르모앙의 추측

	*  르모앙은 낯선 이름이지만, 그래도 대충 유명한 수학자여야 할것 같은데, 구글에서 '르모앙'을 검색하면 BOJ의 이 문제만 잔뜩 나온다. 
		*  프랑스 뮤직비디오 감독이나, 벨기에 축구선수도 나오기는 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17143?rev=1636983656&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-15T13:40:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>낚시왕</title>
        <link>https://teferi.net/ps/problems/boj/17143?rev=1636983656&amp;do=diff</link>
        <description>낚시왕

풀이

	*  그냥 시키는 대로 구현하면 되는 문제. 발상은 어려울게 없지만 구현이 번거롭다.
	*  일단 귀찮은 부분은 상어의 현재위치, 이동 방향, 속도가 주어져있을때 다음 위치와 방향를 구하는 로직. 일단 이동방향과 속도로 들어오는 입력을 그냥 dx와 dy로 바꿔서 저장해두면 계산이 조금 간단해진다. 다음으로는 모서리에 부딪히면 180도로 방향을 바꿔서 이동하는 처리가 귀찮은데.. 생각해보면 좌우로 이동하는 경우 주기가 (C-1)*2 만큼이라는 것을 알수 있다. 그래서 일단 dx만큼 더해주고, (C-1)*2 로 나눈 나머지를 구한다음, 그 값이 C이하면 오른쪽을 보고 있는 방향, C보다 크면 반사된 위치로 위치를 구하고, 왼쪽을 보고 있는 방향으로 업데이트 해주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17144?rev=1641045947&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-01T14:05:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>미세먼지 안녕!</title>
        <link>https://teferi.net/ps/problems/boj/17144?rev=1641045947&amp;do=diff</link>
        <description>미세먼지 안녕!

풀이

	*  그냥 구현이 번거로운 시뮬레이션 문제.
	*  시키는대로 미세먼지의 확산과, 공기청정기의 이동을 구현하고, 이것을 T초동안 반복하면 된다. 총 시간복잡도는 O(T*r*c)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17203?rev=1654009469&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-31T15:04:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>∑|ΔEasyMAX|</title>
        <link>https://teferi.net/ps/problems/boj/17203?rev=1654009469&amp;do=diff</link>
        <description>∑|ΔEasyMAX|

풀이

	*  주어진 구간에서의 박자의 변화량의 부분합을 구하는 문제이다. 박자의 변화량의 누적합을 O(n)에 만들면, 각 쿼리를 O(1) 에 처리 가능하다. 총 시간복잡도는 O(n+q)
	*  근데 박자의 빠르기가 음수로 주어지는건 대체 뭔지</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17236?rev=1740409844&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-24T15:10:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Heights</title>
        <link>https://teferi.net/ps/problems/boj/17236?rev=1740409844&amp;do=diff</link>
        <description>Heights

풀이

	*  ha를 높이로 하도록 삼각형을 돌렸을때 밑변의 길이가 a라고 하자. 삼각형의 넓이는 a*ha/2이다.
	*  마찬가지로 계산하면 a*ha/2 = b*hb/2 = c*hc/2 이므로, 세 변의 길이의 비 a:b:c = hb*hc:hc*ha:ha*hb 가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17275?rev=1757600326&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-11T14:18:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>부족 전쟁</title>
        <link>https://teferi.net/ps/problems/boj/17275?rev=1757600326&amp;do=diff</link>
        <description>부족 전쟁

풀이

	*  모두 연결되었거나, 모두 연결되어있지 않은 세 노드 세기 참고.
	*   Monochromatic Triangles,  네온 사인 도 동일한 문제이다.
	*  시간복잡도는 O(|E|) 
	*  

코드



boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17298?rev=1639230733&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-11T13:52:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>오큰수</title>
        <link>https://teferi.net/ps/problems/boj/17298?rev=1639230733&amp;do=diff</link>
        <description>오큰수

풀이

	*  Monotone Stack 기법을 사용해서 푸는 전형적이고 대표적인 문제.
	*  기본은 아직 오큰수가 결정되지 않은 원소들을 스택에 저장하는 것. 이 원소들은 내림차순으로 유지될수밖에 없다 (top에 가장 작은 원소가 있도록). x라는 새 원소가 들어오면, 스택에서 x보다 작은수들을 모두 pop하고, x를 push한다. 이렇게 하면 스택안의 원소는 내림차순으로 유지되고, 이때 pop한 원소들의 오큰수는 x가 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17353?rev=1617123930&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-03-30T17:05:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>하늘에서 떨어지는 1, 2, ..., R-L+1개의 별</title>
        <link>https://teferi.net/ps/problems/boj/17353?rev=1617123930&amp;do=diff</link>
        <description>하늘에서 떨어지는 1, 2, ..., R-L+1개의 별

풀이

	*  구간에 등차수열을 더하는 업데이트와, 특정 포인트의 값을 구하는 두 종류의 쿼리를 처리해야 하는 문제.
	*  등차수열을 더하는 업데이트도 세그먼트 트리의 lazy propagation으로 처리가 불가능한 것은 아니지만 다소 복잡하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17398?rev=1656089752&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-24T16:55:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>통신망 분할</title>
        <link>https://teferi.net/ps/problems/boj/17398?rev=1656089752&amp;do=diff</link>
        <description>통신망 분할

풀이

	*  연결된 그래프에서 엣지를 삭제하는 쿼리들을 처리해야 할때, 오프라인 쿼리의 아이디어를 사용해서 역순으로 엣지를 추가해나가는 식으로 처리하는 것은 동적 연결성관련 문제에서 흔하게 사용되는 테크닉이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17407?rev=1619795743&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:15:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>괄호 문자열과 쿼리</title>
        <link>https://teferi.net/ps/problems/boj/17407?rev=1619795743&amp;do=diff</link>
        <description>괄호 문자열과 쿼리

풀이

	*  올바른 괄호 문자열의 정의는 문제에서 적혀있는대로이지만, 다른 방법으로도 어떤 문자열이 올바른 문자열인지 아닌지를 체크할 수는 있다. 다음 두 조건을 만족하면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17417?rev=1623312876&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-06-10T08:14:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Optimization is Freaky Fun</title>
        <link>https://teferi.net/ps/problems/boj/17417?rev=1623312876&amp;do=diff</link>
        <description>Optimization is Freaky Fun

풀이

	*  문제 구성이 마음에 들지 않는다.. 여러개의 서브태스크가 있는데 필요로 하는 풀이방법이 다르다. 즉, 입력값을 보고, 그것으로부터 이게 어떤 서브태스크인지를 파악해서, 그 서브태스크에서 주어진 다른 조건을 함께 가정해서 문제를 풀어야 한다. 이럴거면 차라리 여러개의 문제로 나눠서 출제하는 것이 낫지 않나.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17429?rev=1622215744&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-28T15:29:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>국제 메시 기구</title>
        <link>https://teferi.net/ps/problems/boj/17429?rev=1622215744&amp;do=diff</link>
        <description>국제 메시 기구

풀이

	*  HLD + lazy segment tree
	*  쿼리 종류가 다양해서 복잡해 보이지만, 결국은 기본적인 연산들이고, 풀이 자체는 새로운 아이디어를 필요로 하는 것은 없다.
	*  트리에서의 경로 쿼리와, 서브트리 쿼리를 구간 쿼리로 변환하는 것은 Heavy Light Decomposition의 기본적인 연산들이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17472?rev=1635085042&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-24T14:17:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>다리 만들기 2</title>
        <link>https://teferi.net/ps/problems/boj/17472?rev=1635085042&amp;do=diff</link>
        <description>다리 만들기 2

풀이

	*  최소 신장 트리 (Minimum Spanning Tree / MST)를 구하기만 하면 되는 문제이다. 
	*  다만 구현이 조금 번거롭다. 주어진 지도를 그래프로 변환하는 작업이 귀찮다.
	*  각각의 섬이 하나의 노드에 대응되는 그래프를 만들기 위해서는, 먼저 그리드에서 커넥티드 컴포넌트들을 추출해서 섬을 만들고, 설치 가능한 다리들이 어떤 섬과 어떤 섬을 연결하는지를 찾아서 엣지들을 만들어주는 귀찮은 작업이 필요하다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17478?rev=1641045439&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-01T13:57:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>재귀함수가 뭔가요?</title>
        <link>https://teferi.net/ps/problems/boj/17478?rev=1641045439&amp;do=diff</link>
        <description>재귀함수가 뭔가요?

풀이

	*  그냥 간단한 구현문제.
	*  재귀함수를 써서 푸는 것을 의도한 문제인것 같지만, 그냥 패턴을 찾아서 반복으로 푸는 것도 간단하다.
	*  시간복잡도는 O(n).

코드</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17526?rev=1674704171&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-01-26T03:36:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Star Trek</title>
        <link>https://teferi.net/ps/problems/boj/17526?rev=1674704171&amp;do=diff</link>
        <description>Star Trek

풀이

	*  볼록 껍질을 이용한 최적화를 이용할수 있는 DP 문제이다.
	*  DP[i] 를 i번 행성(0-based) 까지 도착하데 걸리는 최소시간이라고 하고 점화식을 세우자. 
		*  $DP[0] = 0 $
		*  $DP[i] = min_{j&lt;i}(DP[j] + p[j] + s[j]\cdot dist(j,i))$
		*  dist(j,i)는 j번째 행성에서 i번째 행성까지의 거리인데, 이것은 0번 행성부터 i번 행성까지의 거리를 distsum에 구해두면 (단순 누적합), dist(j,i) = distsum[i] - distsum[j]이 된다.$DP[i] = min_{j&lt;i}(DP[j] + p[j] + s[j]\cdot (dist_psum[i] - distsum[j]))$$DP[i] = min_{j&lt;i}(s[j] \cdot  distsum[i] + DP[j] + p[j] - s[j] \cdot distsum[j])$…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17546?rev=1771031863&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-14T01:17:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Exits in Excess</title>
        <link>https://teferi.net/ps/problems/boj/17546?rev=1771031863&amp;do=diff</link>
        <description>Exits in Excess

풀이

	*  주어진 방향 그래프에서 절반 이하의 에지를 제거해서 사이클이 없도록 만드는 문제.
	*  가능한 방법은 다양하지만, 가장 간단하게 해결할 수 있는 방법은, 모든 u-&gt;v 에지중에서 u&gt;v인 에지만 남기고 나머지를 지우면 이 그래프는 DAG가 된다. 만약 지워야 할 에지가 절반이 넘는다면, 반대로 u&gt;v인 에지를 지우고 u&lt;v 인 에지를 남기면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17626?rev=1679323142&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-20T14:39:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Four Squares</title>
        <link>https://teferi.net/ps/problems/boj/17626?rev=1679323142&amp;do=diff</link>
        <description>Four Squares

풀이

	*  제곱수의 합 (More Huge)의 쉬운 버전.
	*  풀이는 제곱수의 합 을 참고. 여기에서는 n이 크지 않으므로, 두 제곱수의 합으로 나타낼수 있는지 여부를 나이브하게 O(sqrt(n))에 구현해도 동작한다.
		*  그리고 세 제곱수의 합으로 나타낼수 있는지 여부도, 르장드르의 세 제곱수 정리를 사용하지 않고 그냥 계산해도 충분히 빠르게 구할수 있다..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17633?rev=1679324089&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-20T14:54:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제곱수의 합 (More Huge)</title>
        <link>https://teferi.net/ps/problems/boj/17633?rev=1679324089&amp;do=diff</link>
        <description>제곱수의 합 (More Huge)

풀이

	*  Four Squares과 제곱수의 합의 (많이) 어려운 버전
	*  풀이는 제곱수의 합을 참고. 
	*  Four Squares의 코드와 다른점은, 2개의 제곱수의 합으로 표현 여부를 찾기 위해 페르마의 두 제곱수 정리를 사용했다는 부분. 이때 소인수분해를 하기 위해</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17646?rev=1679325207&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-20T15:13:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제곱수의 합 2 (More Huge)</title>
        <link>https://teferi.net/ps/problems/boj/17646?rev=1679325207&amp;do=diff</link>
        <description>제곱수의 합 2 (More Huge)

풀이

	*  루비 문제 중에서는 풀이가 많이 있는 편이다. 출제자가 직접 쓴 풀이도 찾을수 있다.
	*  풀이는 제곱수의 합를 참고.
	*  두 제곱수로 나누는 방법을 찾기 위해서, 가우스정수의 최대공약수를 이용해서 구하는 방식과, Hermite-Serret 알고리즘으로 구하는 방식이 있는데, 실행 시간은 거의 비슷했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17831?rev=1636125972&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-05T15:26:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>대기업 승범이네</title>
        <link>https://teferi.net/ps/problems/boj/17831?rev=1636125972&amp;do=diff</link>
        <description>대기업 승범이네

풀이

	*  트리 DP 문제
	*  각 서브트리에 대해서, 가질수 있는 최댓값 (dp[x])와, 루트가 child와 멘토링을 안맺었을때의 최댓값(dp2[x])를 구해놓으면 된다. 
	*  그러면 어떤 트리에 대해서 dp와 dp2값을 서브트리들에 대한 값으로부터 계산하는 것은 아래처럼 된다.$dp2[root] = \sum_i{dp[i]}$$dp[root] = max(dp2[root], max_k(\sum_{i≠k}{dp[i]} + dp2[k] + A[root]*A[k]))$$dp[root] = \sum_i{dp[i]} + max(0, max_k(-dp[k] + dp2[k] + A[root]*A[k]))$…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17896?rev=1741359176&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-07T14:52:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Meow Factor 2</title>
        <link>https://teferi.net/ps/problems/boj/17896?rev=1741359176&amp;do=diff</link>
        <description>Meow Factor 2

풀이

	*  최대 4번 안에 처리된다는 것은 알고 있다. 1번, 2번, 3번에 처리될수 있는 경우를 잘 정리하면 되는데, 이게 굉장히 번거럽다. 그나마 정규 표현식을 사용함으로써 코드량 자체는 줄일수 있지만, 표현식을 찾는데에 상당한 꼼꼼함을 요구한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17975?rev=1619795712&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:15:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Strike Zone</title>
        <link>https://teferi.net/ps/problems/boj/17975?rev=1619795712&amp;do=diff</link>
        <description>Strike Zone

풀이

	*  금광의 약화판. 조건이 조금 약해졌지만 결국 동일한 방법으로 풀어야 하는 문제이다. 따라서 풀이는 생략
	*  다만, 모든 점의 x좌표와 y좌표가 다 다르다는 점 때문에, 구현은 조금 덜 귀찮다. 오예</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/17978?rev=1682424794&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T12:13:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Washer</title>
        <link>https://teferi.net/ps/problems/boj/17978?rev=1682424794&amp;do=diff</link>
        <description>Washer

풀이

	*  문제가 처음에는 K개의 그룹으로 나눈다고 주어져있기 때문에 좀 막막해보인다. 근데 끝까지 읽으면, K가 최대 2라는 제한이 주어진다.. 이럴거면 그냥 처음부터 한개나 두개의 두룹으로 나눈다고 설명해주면 안되나..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18110?rev=1685945435&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-05T06:10:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>solved.ac</title>
        <link>https://teferi.net/ps/problems/boj/18110?rev=1685945435&amp;do=diff</link>
        <description>solved.ac

풀이

	*  그냥 시키는대로 처리해주면 되는 문제.
	*  투표값들중 상위 15%, 하위 15%를 제거하는 것은, 값이 1~30 범위 안에 들어오기때문에, 값별로 카운트를 세어서 처리하면 효율적으로 O(n)에 처리가 가능하다. 하지만, 그냥 모든 투표를 리스트에 저장한뒤에 정렬해서 처리하는것이 코딩면에서는 훨씬 간단하기에 이렇게 처리했다. 이 경우에는 정렬이 필요하므로 시간복잡도는 O(nlogn)이 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18111?rev=1634479383&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T14:03:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>마인크래프트</title>
        <link>https://teferi.net/ps/problems/boj/18111?rev=1634479383&amp;do=diff</link>
        <description>마인크래프트

풀이

	*  지형 편집과 비슷한 문제처럼 보이지만 풀이는 완전히 다르다. 저 문제처럼 효율적으로 풀수 있는 방법이 없고, 그냥 브루트포스로 높이를 0으로 맞출때, 1로 맞출때, ..., H로 맞출때 까지의 시간을 전부 구해서 최솟값을 찾는 방법밖에 없다. (H는 높이가 가장 높은 좌표의 높이)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18171?rev=1626016022&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-07-11T15:07:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ABB</title>
        <link>https://teferi.net/ps/problems/boj/18171?rev=1626016022&amp;do=diff</link>
        <description>ABB

풀이

	*  문자열의 suffix중에서 팰린드롬을 이루는 가장 긴 suffix를 찾으면 된다. 그러면 {문자열의 길이} - {가장 긴 팰린드롬 suffix의 길이} 만큼의 글자를 추가해서 전체를 팰린드롬으로 만들어 줄 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18174?rev=1689342456&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-14T13:47:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Crimson Sexy Jalapeños</title>
        <link>https://teferi.net/ps/problems/boj/18174?rev=1689342456&amp;do=diff</link>
        <description>Crimson Sexy Jalapeños

풀이

	*  4방향 각각에서 먹을수 있는 줄의 갯수는 그 방향에서 처음 할라피뇨가 나오기 직전까지의 줄수를 세면 된다. 그리고 이값들은 방향들을 어떤 순서로 먹든지 변하지 않는다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18185?rev=1642518091&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-18T15:01:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>라면 사기 (Small)</title>
        <link>https://teferi.net/ps/problems/boj/18185?rev=1642518091&amp;do=diff</link>
        <description>라면 사기 (Small)

풀이

	*  아이디어를 찾는 난이도만으로 다이아몬드로 평가받은 문제이다. 필요한 알고리즘 지식이나, 구현의 난이도는 없다고 봐도 될 수준.
	*  DP를 이용해서 푸는 방법이 떠오르지만, Ai의 범위가 너무 커서 쉽지 않다. dp[i][j][k] 를 i번째 공장에서까지 구입을 마쳤고, i번째 공장에서 살때 2개 묶음으로 산 갯수를 j개, 3개묶음으로 산 갯수를 k개인 상태에서의 최소가격으로 표현해서 이를 기반으로 점화식을 세울수 있지만, 테이블의 크기가 O(n*m*m)으로 최대 10^12 가 되어서 이 풀이는 무리이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18186?rev=1642518467&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-18T15:07:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>라면 사기 (Large)</title>
        <link>https://teferi.net/ps/problems/boj/18186?rev=1642518467&amp;do=diff</link>
        <description>라면 사기 (Large)

풀이

	*  라면 사기 (Small)의 라지 버전.
	*  n의 범위가 커졌고 라면의 가격이 일반화되었지만, 알고리즘 자체는 라면 사기 (Small)과 동일하다. 오히려 문제가 일반화되면서 더 쉬워진 느낌도 있다. 라면 묶음들의 가격이 3,5,7로 주어졌던</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18227?rev=1619800725&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T16:38:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>성대나라의 물탱크</title>
        <link>https://teferi.net/ps/problems/boj/18227?rev=1619800725&amp;do=diff</link>
        <description>성대나라의 물탱크

풀이

	*  복잡한 듯 보이지만, 각 노드는 자식 노드에 물이 채워질때마다 업데이트되며, 그때 업데이트 되는 값은 그 노드의 깊이(=루트로부터의 거리)이다.
	*  결국 특정 노드의 채워진 물의 양은, {자식 노드들에 쿼리가 들어온 횟수} * {그 노드의 깊이} 가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18282?rev=1680621178&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-04T15:12:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Golema Gozba</title>
        <link>https://teferi.net/ps/problems/boj/18282?rev=1680621178&amp;do=diff</link>
        <description>Golema Gozba

풀이

	*  Knights of Round Table와 동일한 문제이다. 다이아몬드3 문제가 중복이라니 개꿀이다.
	*  풀이는 Knights of Round Table 참고. 코드도 동일하다

코드

(다이아몬드 이상은 코드 생략)

	*  Dependency 
		*  teflib.graph.create_graph_from_input
		*  teflib.graph.two_coloring


boj ps:problems:boj:다이아몬드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18291?rev=1676276179&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-13T08:16:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>비요뜨의 징검다리 건너기</title>
        <link>https://teferi.net/ps/problems/boj/18291?rev=1676276179&amp;do=diff</link>
        <description>비요뜨의 징검다리 건너기

풀이

	*  1번과 N번 사이에 있는 징검다리를 원하는 만큼 밟고 갈수 있다.
	*  따라서 {2, ... ,N-1}의 부분집합의 갯수를 구하는 문제가 된다. 답은 2^(N-2) % MOD. 거듭제곱의 빠른 계산 (Exponentiation by squaring)을 이용하면 O(logN)에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18298?rev=1681309693&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-12T14:28:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Icebergs</title>
        <link>https://teferi.net/ps/problems/boj/18298?rev=1681309693&amp;do=diff</link>
        <description>Icebergs

풀이

	*  각 빙산의 넓이를 각각 구해서 더하기만 하면 된다. 각 빙산은 다각형이므로 다각형의 넓이를 구하는 공식을 쓰면 된다.
	*  빙산 한개의 넓이를 구하는데에 O(P)이므로 빙산 N개의 넓이를 구하는데에는 O(NP)가 걸린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18310?rev=1732519794&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-25T07:29:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>안테나</title>
        <link>https://teferi.net/ps/problems/boj/18310?rev=1732519794&amp;do=diff</link>
        <description>안테나

풀이

	*  가장 기본적인 형태의 절댓값 함수의 최솟값 문제. 모든 좌표값 중에서 중앙값이 최적 위치가 된다.
	*  좌표값을 정렬해서 중앙값을 찾으면 되므로 시간복잡도는 O(nlogn)

코드



	*  Dependency: teflib.convexopt.min_sum_of_abs_funcs

boj ps:problems:boj:실버_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18353?rev=1646051888&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-28T12:38:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>병사 배치하기</title>
        <link>https://teferi.net/ps/problems/boj/18353?rev=1646051888&amp;do=diff</link>
        <description>병사 배치하기

풀이

	*  발상에 걸린 시간: 매우짧음 / 구현에 걸린 시간: 매우짧음
	*  그냥 문제를 읽으면 최장 감소 부분 수열의 길이를 구하라는 문제라는 것을 바로 알수 있다. 
	*  전체 길이에서 최장 감소 부분 수열의 길이를 뺀 값이 열외해야하는 최소 병사수가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18407?rev=1619795528&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:12:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가로 블록 쌓기</title>
        <link>https://teferi.net/ps/problems/boj/18407?rev=1619795528&amp;do=diff</link>
        <description>가로 블록 쌓기

풀이

	*  구간 업데이트와 구간 쿼리로 처리되는 문제. 여기에 좌표압축이 추가된 문제.
	*  어떤 구간에 블럭을 놓는 것은, 그 구간의 최대 높이 h를 구한 뒤, 그 구간의 높이를 h+1로 업데이트 하는 것으로 처리된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18436?rev=1619798891&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T16:08:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 37</title>
        <link>https://teferi.net/ps/problems/boj/18436?rev=1619798891&amp;do=diff</link>
        <description>수열과 쿼리 37

풀이

	*  A 수열에 대응되는 B 수열이 있어서, A[i]가 홀수이면 B[i]=1, 짝수이면 B[i]=0 이라고 하자.
	*  A[l:r]중에서 홀수의 갯수를 구하는 것은 sum(B[l:r])과 같고, 짝수의 갯수는 (r-l+1)-sum(B[l:r]) 과 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18437?rev=1620121218&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-05-04T09:40:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>회사 문화 5</title>
        <link>https://teferi.net/ps/problems/boj/18437?rev=1620121218&amp;do=diff</link>
        <description>회사 문화 5

풀이

	*  오일러 경로 테크닉과 구간 업데이트+구간 쿼리를 결합한 문제.
	*  우선 오일러 경로 테크닉을 사용해서, 서브트리에 대한 쿼리를 구간에 대한 쿼리로 변환한다. 구간에 대해서 처리해야 하는 쿼리의 종류는 assignment 업데이트 + add 쿼리로,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18540?rev=1688816580&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-08T11:43:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Scored Nim</title>
        <link>https://teferi.net/ps/problems/boj/18540?rev=1688816580&amp;do=diff</link>
        <description>Scored Nim

풀이

	*  1개짜리 힙을 만들면, 그 힙의 색깔은 이후에 변하지 않는 확정적인 점수가 된다.
	*  n개짜리 힙 한개를 분할하기 시작하면, 어떤 식으로 분할하든 n-1턴 이후에 모든 분할이 끝난다. 자기턴에 확정점수를 최대 1점 만들수 있다. x개 힙을 1개 힙과 x-1개 힙으로 나누면 된다. 이것이 최적 행동이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18580?rev=1689437547&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-15T16:12:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Long Game</title>
        <link>https://teferi.net/ps/problems/boj/18580?rev=1689437547&amp;do=diff</link>
        <description>Long Game

풀이

	*  복잡하게 생각할것이 없다. 인접한 페어들 중에서 인버전이 있는것들만 생각해보자. 그 페어들이 모두 끊어지면 인버전은 하나도 남지 않는다.
	*  그러면 어떤식으로든 서로 게임을 진행하다가 인버전 페어가 한개만 남는다면 그 페어를 끊는 순간 지기 때문에, 둘다 그곳을 제외한 남은곳들을 자를것이다. 그리고 남은 곳이 인버전페어 한군데만 남게 될때 그곳을 자르고 지게 된다. 결국, 마지막 턴을 진행하는 사람이 지게 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18719?rev=1612689801&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T09:23:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Binomial</title>
        <link>https://teferi.net/ps/problems/boj/18719?rev=1612689801&amp;do=diff</link>
        <description>Binomial

풀이

	*  뤼카의 정리가 태그로 달려있어서 풀어보게 된 문제지만, 뤼카의 정리를 이용해서 이항계수를 직접 계산하는 문제는 아니다.
	*  C(ai,aj)를 2로 나눈 나머지는, 뤼카의 정리를 사용해서 전개할 수 있다. C(ai,aj)%2를 구성하는 텀들은, ai와 aj를 각각 이진 전개한 뒤 각각의 자리수로 이항계수를 만든 것인데, 이는 C(1,1), C(1,0), C(0,1), C(0,0) 중에 하나이고, 이 중에서 C(0,1)을 제외하고는 모두 1이 된다. 이것들을 다 곱한 값이 홀수가 된다는 의미는 곱해지는 텀중에 C(0,1)이 없다는 뜻이고, 이는 ai와 aj를 각각 이진전개 하면 모든 자릿수에서 ai쪽이 aj쪽보다 크거나 같다, 즉 (ai|aj) = ai 라는 의미이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18917?rev=1648014680&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-23T05:51:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 38</title>
        <link>https://teferi.net/ps/problems/boj/18917?rev=1648014680&amp;do=diff</link>
        <description>수열과 쿼리 38

풀이

	*  배열 원소를 모두 유지할 필요 없이, 모든 원소를 더한 값 / 모든 원소를 XOR한 값 이 두가지만 유지하고 있으면 된다.
	*  숫자를 추가할때는, 배열의 어디 위치에 추가하든 관계없이 모든 원소를 더한 값과 모든 원소를 XOR한 값에 추가하는 값을 +와 xor 해주면 되고, 마찬가지로 제거할때는 -와 xor을 처리해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18929?rev=1680620013&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-04T14:53:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Knights of Round Table</title>
        <link>https://teferi.net/ps/problems/boj/18929?rev=1680620013&amp;do=diff</link>
        <description>Knights of Round Table

풀이

	*  Golema Gozba와 동일한 문제.
	*  연속한 3명이 같은 색깔이 되어서는 안된다는 조건을 그대로 활용해서 답을 찾으려면 만만치 않다. twosat 으로 모델링하는것이 가능할지도 모르겠다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18937?rev=1654619071&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-07T16:24:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>왕들의 외나무다리 돌게임</title>
        <link>https://teferi.net/ps/problems/boj/18937?rev=1654619071&amp;do=diff</link>
        <description>왕들의 외나무다리 돌게임

풀이

	*  규칙에서 파악해야 할것은 뒤로 이동해서 상태가 더 좋아지는 경우는 없다는 것이다. 내가 뒤로 n칸 이동하면 상대는 다음턴에 앞으로 n칸 이동할수 있고, 그러면 원래 상태로 되돌아간다. 따라서 뒤로 이동하는 움직임을 배제하고 생각하면, 결국 상대와 나 사이에 빈 칸이 n개일때, k칸 앞으로 이동하는 것은, 돌이 n개 있는 무더기에서 k개를 가져가는 것과 동일하므로 님게임과 똑같이 분석하면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/18978?rev=1773912467&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-19T09:27:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Balanced Sequence</title>
        <link>https://teferi.net/ps/problems/boj/18978?rev=1773912467&amp;do=diff</link>
        <description>Balanced Sequence

풀이

	*  어떤 괄호문자열 t가 주어졌을때, longest balanced subsequence의 길이가 어떻게 될지 먼저 생각해보자. 최소 개수의 '(' 또는 ')'를 제거해서 올바른 괄호 문자열 (VPS: Valid Parenthesis String)가 되도록 하면 된다. 
		*  '('=1, ')'=-1로 치환해서 누적합과 합을 생각하자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19086?rev=1768833408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-19T14:36:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Leave Out All The Rest</title>
        <link>https://teferi.net/ps/problems/boj/19086?rev=1768833408&amp;do=diff</link>
        <description>Leave Out All The Rest

풀이

	*  merge된 수열의 LIS의 길이의 최댓값은 {a의 LIS의 길이} + {b의 LIS의 길이}임은 자명하다
	*  그리고, a의 LIS와 b의 LIS를 잘 merge 하면, 정렬된 상태의 수열을 얻을 수 있다. 즉, a와 b를 merge할때, a의 LIS와 b의 LIS가 정렬된 상태가 되도록 merge해주기만 하면, 머지된 수열의 LIS 길이가 {a의 LIS의 길이} + {b의 LIS의 길이}가 되도록 만들수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19102?rev=1692547821&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-20T16:10:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Array Challenge</title>
        <link>https://teferi.net/ps/problems/boj/19102?rev=1692547821&amp;do=diff</link>
        <description>Array Challenge

풀이

	*  정신 나갈것 같은 문제. 감도 안잡히는 복잡한 점화식이 주어진다..
	*  태그를 까보면 벌리캠프-매시를 돌려야 한다는 것을 알수 있긴 하지만, 태그없이는 대체 제곱근에 floor까지 붙은 형태의 함수가 선형 점화식 꼴로 표현될수 있을거라는 상상을 어떻게 할수 있을지..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19133?rev=1729067912&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-16T08:38:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Subset Sum</title>
        <link>https://teferi.net/ps/problems/boj/19133?rev=1729067912&amp;do=diff</link>
        <description>Subset Sum

풀이

	*  기본적으로는, 상태공간이 부분집합일 때에 [작성중] Fracturing Search를 사용하는 방법으로 풀 수 있다.
	*  여기서 신경써야 하는 부분은 음수값을 갖는 원소의 처리이다.
	*  단순한 아이디어로는, 음수 원소만 갖는 집합과, 양수 원소만 갖는 집합으로 분리해서 처리하는 방법이 있을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19238?rev=1608271485&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-12-18T06:04:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스타트 택시</title>
        <link>https://teferi.net/ps/problems/boj/19238?rev=1608271485&amp;do=diff</link>
        <description>스타트 택시

풀이

	*  그냥 시키는 대로 구현하면 된다. 최단거리를 구해야 할때 BFS를 사용하면 된다.
	*  풀이 자체는 어렵지 않지만, 구현이 길고 문제에 실수할만한 요소들도 많은, 짜증나는 유형..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19406?rev=1702356304&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-12T04:45:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fruit Game</title>
        <link>https://teferi.net/ps/problems/boj/19406?rev=1702356304&amp;do=diff</link>
        <description>Fruit Game

풀이

	*  우선 C가 한쪽 끝에 있는 경우를 생각해보자. 반대쪽 끝에 있는 과일이 A라면 애플맨의 패배, B라면 바나나맨의 패배.
	*  비슷하게 양쪽 끝에 모두 A가 있으면 애플맨의 패배, 모두 B가 있으면 바나나맨의 패배.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19535?rev=1764683000&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-02T13:43:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ㄷㄷㄷㅈ</title>
        <link>https://teferi.net/ps/problems/boj/19535?rev=1764683000&amp;do=diff</link>
        <description>ㄷㄷㄷㅈ

풀이

	*  얼핏 보면 모든 노드 4개짜리 서브그래프에 대해서 ㄷ 인지 ㅈ인지를 구분해야 할 것처럼 보이지만, 이것은 매우 비효율적이다.
	*  그냥 ㄷ과 ㅈ을 각각 세어주는 편이 빠르다. 조합론적으로 O(n)에 처리할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19539?rev=1643248220&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-27T01:50:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>사과나무</title>
        <link>https://teferi.net/ps/problems/boj/19539?rev=1643248220&amp;do=diff</link>
        <description>사과나무

풀이

	*  우선 명확한 것. 나무의 높이의 합이 3의 배수가 아니면 불가능하다.
	*  나무의 높이의 합이 3의 배수일때도 1 1 1과 같은 경우에는 불가능하다. 4 1 1 와 같은 경우에는 가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19568?rev=1744015411&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-07T08:43:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>직사각형</title>
        <link>https://teferi.net/ps/problems/boj/19568?rev=1744015411&amp;do=diff</link>
        <description>직사각형

풀이

	*  30×30개의 모든 셀을 이용해서 최적의 답을 찾으려고 시도하면 함정에 빠지기 쉽다.
	*   약 팔기 를 확장한다는 아이디어로 접근하면 간단하다. 약 팔기을 가운데 칸을 중심으로 양쪽으로 2개의 축이 있어서, 그것을 이용해서 k진법의 2자리 수를 만드는 문제로 생각해보자. 그럼 이 문제는 가운데 칸을 중심으로 4개의 축이 있어서 k진법의 4자리 수를 만드는 것으로 생각할 수 있다. 가운데 칸을 중심으로 십자 방향의 칸들을 제외한 나머지 칸들에는 전부 0을 채우면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19577?rev=1675840276&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-08T07:11:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수학은 재밌어</title>
        <link>https://teferi.net/ps/problems/boj/19577?rev=1675840276&amp;do=diff</link>
        <description>수학은 재밌어

풀이

	*  그냥 쉽게 떠오르는 방법은, 가능한 모든 x에 대해서 일일히 φ(x)를 계산해서 xφ(x)=n 이 되는 x를 찾는 것이다. 가능한 x의 후보는 n의 모든 약수들이다.
	*  쉽게 떠오르지만, 시간 안에 돌아갈지 확신이 잘 안섰다. 모든 약수에 대해서</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19584?rev=1692715782&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-22T14:49:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>난개발</title>
        <link>https://teferi.net/ps/problems/boj/19584?rev=1692715782&amp;do=diff</link>
        <description>난개발

풀이

	*  뭔가 그래프 문제처럼도 보이고 기하 문제처럼도 보이게 포장을 살짝 해놓았는데, 포장을 풀고 나면 결국 가장 인터벌이 많이 겹치는 점을 찾는 문제이다. 장소들의 x좌표는 문제를 푸는데 있어서는 무시해도 되고 y좌표만을 가지고서 1차원 배열로 생각하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19598?rev=1642866236&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-22T15:43:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>최소 회의실 개수</title>
        <link>https://teferi.net/ps/problems/boj/19598?rev=1642866236&amp;do=diff</link>
        <description>최소 회의실 개수

풀이

	*  강의실 배정과 n의 범위를 제외하고 동일한 문제. 풀이도 동일하니 그쪽을 참조.

코드



boj ps:problems:boj:골드_3 ps:teflib:linear_homogeneous_recurrence</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19651?rev=1619795698&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-04-30T15:14:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 쿼리 39</title>
        <link>https://teferi.net/ps/problems/boj/19651?rev=1619795698&amp;do=diff</link>
        <description>수열과 쿼리 39

풀이

	*  배열의 구간에 등차수열을 더하는 것은, 인접한 원소의 차이값들로 새로운 배열을 만드는 테크닉을 사용하면, 구간에 일정한 값을 더하는 변환으로 바꿀 수 있고, 이것을 한번 더 적용하면 구간의 양 끝 점만 업데이트 하는 것으로 바꿀 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19700?rev=1765959053&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-17T08:10:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수업</title>
        <link>https://teferi.net/ps/problems/boj/19700?rev=1765959053&amp;do=diff</link>
        <description>수업

풀이

	*  키가 큰 사람부터 배정하도록 하자. i번 사람을 배정할 때에는, 이전에 배정된 사람들은 모두 자신보다 키가 큰 사람들이므로, 이미 만들어진 그룹들중에서 크기가 k_i 보다 작은 팀에 배정하거나, 새로운 팀을 만들어 배정하는 것만 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19737?rev=1689956449&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-21T16:20:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Torus Travel</title>
        <link>https://teferi.net/ps/problems/boj/19737?rev=1689956449&amp;do=diff</link>
        <description>Torus Travel

풀이

	*  처음에 토러스의 정의부터 시작해서 각종 용어를 영어로 엄밀하게 정의하는데 머릿속에 그리면서 이해하는것에 꽤 노력이 필요하다. 근데 스크롤을 조금만 내리면 친절하게 그림이 나온다..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/19939?rev=1645171009&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-18T07:56:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>박 터뜨리기</title>
        <link>https://teferi.net/ps/problems/boj/19939?rev=1645171009&amp;do=diff</link>
        <description>박 터뜨리기

풀이

	*  우선, K개의 바구니에 서로 다른 갯수의 공을 넣으려면, 최소 1+2+...+K = K*(K+1)/2 = M개의 공이 있어야 한다. N이 이것보다 작으면 불가능하니 -1 을 출력한다
	*  이제 M 개의 공을 저렇게 넣었을때, 남은 N-M개의 공을 최대한 골고루 넣어야 바구니의 공의 갯수 차이를 최소화할수 있다. N-M을 K로 나눈 몫과 나머지가 a와 b 라면, 각 바구니에 a개씩 넣어주고, 남은 b개는 가장 많이 들어있는 바구니에서부터 하나씩 넣어주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20040?rev=1634483554&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-17T15:12:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>사이클 게임</title>
        <link>https://teferi.net/ps/problems/boj/20040?rev=1634483554&amp;do=diff</link>
        <description>사이클 게임

풀이

	*  선분을 하나씩 그려나갈때마다 연결된 상태들을 업데이트해주고, 이미 연결되어있는 두 점에 대해서 선분을 추가하게 되는 경우 사이클이 생긴걸로 처리하면 된다.
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20127?rev=1693212524&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-28T08:48:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Y-수열</title>
        <link>https://teferi.net/ps/problems/boj/20127?rev=1693212524&amp;do=diff</link>
        <description>Y-수열

풀이

	*  풀이를 떠올리는 것은 간단하다. 
	*  수열에서 감소하는 부분과 증가하는 부분이 모두 2곳 이상이라면 아무리 돌려도 증가수열이나 감소수열을 만들 수 없다.
	*  1군데에서만 감소하고 나머지는 모두 증가하거나 같다면, 감소하는 부분에서 수열을 나눠서 앞부분을 뒤로 이동시켜서 수열을 만들고, 그 수열이 증가수열이 되는지 확인하면 된다. 반대경우도 마찬가지.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20149?rev=1670490476&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-12-08T09:07:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>선분 교차 3</title>
        <link>https://teferi.net/ps/problems/boj/20149?rev=1670490476&amp;do=diff</link>
        <description>선분 교차 3

풀이

	*  두 선분의 교점을 구하는 문제.
	*  계산 자체는 공식대로 넣어주면 되지만, 다양한 코너케이스를 모두 처리하는것이 번거롭다.

코드



	*  Dependency: teflib.geometry.is_intersecting

boj ps:problems:boj:플래티넘_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20181?rev=1646055316&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-28T13:35:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>꿈틀꿈틀 호석 애벌레 - 효율성</title>
        <link>https://teferi.net/ps/problems/boj/20181?rev=1646055316&amp;do=diff</link>
        <description>꿈틀꿈틀 호석 애벌레 - 효율성

풀이

	*  기본적으로는 간단한 DP이기는 하다.
	*  i번째 먹이를 먹기 시작했을때, i+x 번째 먹이까지 먹어야 최소 만족도 이상이 된다고 하자. 바꿔 적으면 sum(A[i</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20296?rev=1775732853&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-09T11:07:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>폰친구</title>
        <link>https://teferi.net/ps/problems/boj/20296?rev=1775732853&amp;do=diff</link>
        <description>폰친구

풀이

	*  상하한이 있는 Composition의 개수 를 구하는 문제이다. 링크에서 설명했듯이 포함 배제의 원리 (PIE; Principle of Inclusion-Exclusion)나 생성함수 (Generating Function)를 이용해서 식을 유도한 뒤에 O(N+K)에 구할수 있다.
	*  이 문제에서는 K&lt;=N*M으로 주어지므로 시간복잡도가 O(N*M)

코드



	*  Dependency:</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20309?rev=1763014656&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T06:17:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리플 소트</title>
        <link>https://teferi.net/ps/problems/boj/20309?rev=1763014656&amp;do=diff</link>
        <description>트리플 소트

풀이

	*  두칸 간격의 원소를 스왑하는 연산이다. 연산을 아무리 반복해도, 홀수번째 위치의 원소는 계속 홀수번째 위치에, 짝수번째 위치의 원소는 계속 짝수번째 위치에 놓이게 된다. 주어진 수열에서, 홀수 원소가 짝수번째 위치에 놓여져있거나 반대인 경우가 있으면, 이 원소를 올바른 위치로 옮길수 없으므로 정렬이 불가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20366?rev=1652445756&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-05-13T12:42:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>같이 눈사람 만들래?</title>
        <link>https://teferi.net/ps/problems/boj/20366?rev=1652445756&amp;do=diff</link>
        <description>같이 눈사람 만들래?

풀이

	*  네개의 수의 합/차가 조건을 만족하는 수를 찾는 문제.
	*  기본적으로는 수집합 과도 같은 테크닉이다. 모든 페어의 대한 합을 저장해놓고, 이들을 갖고 계산하는 방식으로 시간 복잡도를 O(n^4)가 아닌 O(n^2)로 줄인다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20390?rev=1635054377&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-24T05:46:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>완전그래프의 최소 스패닝 트리</title>
        <link>https://teferi.net/ps/problems/boj/20390?rev=1635054377&amp;do=diff</link>
        <description>완전그래프의 최소 스패닝 트리

풀이

	*  기본적인 최소 신장 트리 (Minimum Spanning Tree / MST) 문제이지만, 노드가 최대 10000인 완전그래프라는 점에서 알고리즘 선택지가 제한된다. 일반적인 크루스칼 알고리즘으로 풀려면 시간 복잡도도 복잡도지만, n*(n+1)/2 개의 엣지 웨이트를 저장하데에서 메모리 문제도 생긴다. 그래서 프림 알고리즘으로 O(n) 공간복잡도와 O(n^2) 시간복잡도로 풀어야 한다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20443?rev=1774517343&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T09:29:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배드민턴 대회</title>
        <link>https://teferi.net/ps/problems/boj/20443?rev=1774517343&amp;do=diff</link>
        <description>배드민턴 대회

풀이

	*  기본적인 교란순열 (Derangement) 문제. 참가자들이 4의 배수가 되도록 무작위로 3명 이하의 참가자를 제외하는 부분이 추가되었을 뿐이다
	*  제외시킬 참가자는 N%4 명을 고르는 방법은 C(N, N%4) 이고, 4의 배수가 된 참가자 N-N%4 명이 모두 본인의 번호가 아닌 번호표를 뽑는 방법은 교란순열 D(4) 이다. 두 값을 곱해주면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20501?rev=1758872086&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-26T07:34:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Facebook</title>
        <link>https://teferi.net/ps/problems/boj/20501?rev=1758872086&amp;do=diff</link>
        <description>Facebook

풀이

	*  a,b가 주어졌을때 공통된 이웃을 그냥 세려면 O(N)이 걸리지만, 비트셋을 이용하면 O(N/w)로 단축시킬수 있다. 그래프에서 삼각형 세기에서도 설명한 방법이다. 이렇게 하면 총 시간복잡도는 O(QN/w)가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20528?rev=1609515762&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-01-01T15:42:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>끝말잇기</title>
        <link>https://teferi.net/ps/problems/boj/20528?rev=1609515762&amp;do=diff</link>
        <description>끝말잇기

	*  Good Bye, BOJ 2020! 대회의 A번 문제. 이 문제를 풀면 solved.ac에서 뱃지를 준다는 공지를 읽고, 참가해서 이 문제만 풀었다.

풀이

	*  팰린드롬으로 끝말잇기를 하려면, 모든 단어의 첫글자(=끝글자)가 동일해야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/20903?rev=1771942351&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-24T14:12:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Confined Catching</title>
        <link>https://teferi.net/ps/problems/boj/20903?rev=1771942351&amp;do=diff</link>
        <description>Confined Catching

풀이

	*  돌 A는 상대와 같은 세로줄에, 돌 B는 상대와 같은 가로줄에 놓여 있는 상태를 생각해보자
	*  이 상태에서는 상대가 가로방향으로 이동하면 돌 A,B 모두 가로방향으로 이동하고, 상대가 세로로 이동하면 역시 돌 A,B 모두 세로방향으로 이동하는 전략을 생각할수 있다. 가로 방향으로 이동하면, A는 상대와의 거리가 유지되지만, B는 상대와 점점 가까워지게 된다 (상대가 처음에는 거리를 유지하며 도망갈수 있지만 결국 벽에 막히게 되므로). 마찬가지로 세로 방향으로 이동하면 A와 상대와의 거리가 줄어든다. 어느쪽으로 이동하든 거리가 줄어드므로 결국은 잡히게 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/21133?rev=1638289525&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-11-30T16:25:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N-Queen 2</title>
        <link>https://teferi.net/ps/problems/boj/21133?rev=1638289525&amp;do=diff</link>
        <description>N-Queen 2

풀이

	*  N-Queen에서 n의 범위를 일반화 시킨 문제. 하지만 솔루션은 동일하다.
	*  n-queen을 계단형으로 배치하는 방법을 그대로 구현하면 O(n)에 솔루션을 찾을 수 있다.

코드



boj ps:problems:boj:플래티넘_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/21739?rev=1700469984&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-20T08:46:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>펭귄 네비게이터</title>
        <link>https://teferi.net/ps/problems/boj/21739?rev=1700469984&amp;do=diff</link>
        <description>펭귄 네비게이터

풀이

	*  결론적으로 카탈랑 수 (Catalan number)가 되기는 하는데, 변환과정이 직관적으로 떠오르지는 않는다.
	*  조건을 만족하기 위해서는, 어떤 칸에 들어가는 수는 그 칸보다 왼쪽이나 위쪽에 있는 칸에 있는 수보다 커야 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/21756?rev=1644732172&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-13T06:02:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>지우개</title>
        <link>https://teferi.net/ps/problems/boj/21756?rev=1644732172&amp;do=diff</link>
        <description>지우개

풀이

	*  N 제한이 매우 작아서 그대로 시뮬레이션을 돌려봐도 된다. 매 루프에서 길이 N/2, N/4, N/8, ..짜리 리스트들을 새로 만드는 식으로 구현한다면 총 시간 복잡도는 O(N)
	*  하지만, 더 쉬운 방법이 있다. 동작 방식을 보면, 2k+1 꼴의 숫자들을 지우고, 4k+2 꼴의 숫자들을 지우고, 8k+4꼴의 숫자들을 지우고,.. 하는 식이다. 이것은 다시 말하면 2의 배수만 남기고 지우고, 다음엔 4의 배수만 남기고 지우고, 8의 배수만 남기고 지우고.. 하는 것과 같다. 이렇게 해서 2^i의 배수가 한개만 남으면 그 수를 출력하는 것이므로, 바꿔 말하면 n이하에서 가장 큰 2의 거듭제곱수를 찾아서 출력하면 된다. 이것은O(1)에 계산 가능.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/21757?rev=1644730606&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-13T05:36:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나누기</title>
        <link>https://teferi.net/ps/problems/boj/21757?rev=1644730606&amp;do=diff</link>
        <description>나누기

풀이

	*  우선 당연하게도, 수열의 합이 4의 배수가 아니라면 4조각으로 나누는 것이 불가능하니 그것부터 체크하자.
	*  합을 4로 나눈 값이 q라고 하자. A의 누적합 배열을 P라고 한다면(P[i] = A[1]+..+A[i]), 이 문제는 P[i]=q, P[j]=2*q, P[k]=3*q 이고 1≤i&lt;j&lt;k&lt;N 인 (i,j,k)의 갯수를 찾는 것과 같다. DP를 이용해서 A[1]</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22151?rev=1687879072&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-27T15:17:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Игра</title>
        <link>https://teferi.net/ps/problems/boj/22151?rev=1687879072&amp;do=diff</link>
        <description>Игра

풀이

	*  질문게시판에 문제의 번역 이 올라와있다.
	*  만약 목적지와 가까워지는 방향으로만 이동이 가능하다면, 배스킨라빈스 게임과 동일해지고 쉽게 누가 승리할지를 알수 있다.
	*  하지만, 여기에서는 목적지와 멀어지는 방향으로도 이동이 가능하다. 아무 플레이어나 자신이 질것 같으면 목적지와 반대쪽으로 이동하는 것을 반복하면 상대는 승리할 수가 없고 비기게 된다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22236?rev=1700490616&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-20T14:30:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가희와 비행기</title>
        <link>https://teferi.net/ps/problems/boj/22236?rev=1700490616&amp;do=diff</link>
        <description>가희와 비행기

풀이

	*  만약 고도가 항상 0 이상이 되어야 한다면, 대표적인 카탈랑 수 (Catalan number) 문제가 된다
	*  여기에서는 처음과 끝을 제외하고는 항상 고도가 1 이상이 되어야 하는데, 이렇게 되려면 맨 처음에는 상승, 맨 마지막에는 하강이 와야 하고, 처음과 끝을 제외한 나머지만 따로 뽑아서 경로를 만들면 항상 0이상으로 유지되어야 한다. 즉 가운데의 d-2 길이의 경로가 뒤크 경로가 되는 가짓수를 구하면 되므로, 답은 (d-2)/2 번째 카탈랑수가 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22341?rev=1645175377&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-18T09:09:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>사각형 면적</title>
        <link>https://teferi.net/ps/problems/boj/22341?rev=1645175377&amp;do=diff</link>
        <description>사각형 면적

풀이

	*  그냥 시키는 대로 구현하면 되는 문제.
	*  점이 들어올때마다, 가로와 세로로 잘랐을때의 넓이를 각각 구해서 비교해보고, 넓어지는 쪽으로 자르면 (=높이나 길이를 갱신해주면) 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22342?rev=1645205076&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-18T17:24:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>계산 로봇</title>
        <link>https://teferi.net/ps/problems/boj/22342?rev=1645205076&amp;do=diff</link>
        <description>계산 로봇

풀이

	*  간단한 2차원 DP 문제.
	*  로봇의 입력값이 될수 있는 범위가 그 로봇을 꼭짓점으로 하는 삼각형 전체 영역으로 되어있긴 하지만, 그중에서 최댓값을 찾기 위해서는 바로 왼쪽열의 3칸만 비교해보면 된다. 따라서 (i,j)로봇의 저장값을 dp[i][j]라고 하면 dp[i][j] = max(dp[i-1][j-1] + D[i-1][j-1], dp[i][j-1] + D[i][j-1], dp[i+1][j-1] + D[i+1][j-1]) 의 간단한 점화식으로 표현될수 있다. M*N 크기의 DP 테이블을 채우는 것은 O(MN)에 채울수 있다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22343?rev=1645720516&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-24T16:35:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>괄호의 값 비교</title>
        <link>https://teferi.net/ps/problems/boj/22343?rev=1645720516&amp;do=diff</link>
        <description>괄호의 값 비교

풀이

	*  처음에는 괄호열의 값을 구하는 함수를 만들고, A와 B의 값을 각각 구해서 비교하면 된다고 생각했다.
	*  괄호열의 값을 구하는것은 실버2 문제인 2504보다도 더 간단한 형태인데도 난이도가 골드로 측정되어있어서 좀 의아했지만, 일단 구현을 했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22857?rev=1638933454&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-08T03:17:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 짝수 연속한 부분 수열 (small)</title>
        <link>https://teferi.net/ps/problems/boj/22857?rev=1638933454&amp;do=diff</link>
        <description>가장 긴 짝수 연속한 부분 수열 (small)

풀이

	*  아무 수를 최대 K개 삭제할 수 있다고 하지만, 짝수 부분수열의 길이를 길게 하기 위해서는 당연하게도 홀수만 K번 삭제해야 한다.
	*  그렇다면 문제는, 홀수를 K개 포함하는 부분수열중에서 가장 긴 것을 찾는 문제가 되고, 이것은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22862?rev=1638931895&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-12-08T02:51:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가장 긴 짝수 연속한 부분 수열 (large)</title>
        <link>https://teferi.net/ps/problems/boj/22862?rev=1638931895&amp;do=diff</link>
        <description>가장 긴 짝수 연속한 부분 수열 (large)

풀이

	*  가장 긴 짝수 연속한 부분 수열 (small)에서 범위를 늘린 문제. 풀이는 가장 긴 짝수 연속한 부분 수열 (small)과 동일하니 그쪽을 참고. 코드도 동일하다.

코드



boj ps:problems:boj:실버_1</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/22967?rev=1743691665&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-03T14:47:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>구름다리</title>
        <link>https://teferi.net/ps/problems/boj/22967?rev=1743691665&amp;do=diff</link>
        <description>구름다리

풀이

	*  우선, n-1개의 에지를 가지고 있는 성게그래프의 지름은 2라는 것을 생각하자.
	*  최대 n-1개의 에지를 추가한다면, 성게그래프를 포함하는 그래프로 변환하는 것이 가능하므로, 항상 최대 지름을 2 이하로 만드는 것이 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23035?rev=1768228276&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-12T14:31:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>가톨릭대는 고양이를 사랑해</title>
        <link>https://teferi.net/ps/problems/boj/23035?rev=1768228276&amp;do=diff</link>
        <description>가톨릭대는 고양이를 사랑해

풀이

	*  격자 경로에서 가장 많은 점수를 얻는 이동 경로를 찾는 문제이다.
	*  링크에서 설명한대로 가장 긴 증가하는 부분 수열 (LIS; Longest Increasing Subsequence)를 이용해서 O(klogk)에 풀 수 있다.
	*  가톨릭대 밖에 고양이가 존재할수 있다는 조건은 왜 굳이 넣어서 그냥 쓸데없이 귀찮게 만들었는지는 모르겠다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23040?rev=1634742267&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-10-20T15:04:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>누텔라 트리 (Easy)</title>
        <link>https://teferi.net/ps/problems/boj/23040?rev=1634742267&amp;do=diff</link>
        <description>누텔라 트리 (Easy)

풀이

	*  몇가지 관찰들. 트리에서 연결된 점들로 구성된 서브그래프를 찾으면 역시 트리이다. 트리에서 두 점 사이의 경로는 유일하다. 
	*  검은색 노드 B와 빨간색 노드 R 간에 엣지가 있으면 B-R의 누텔라 경로를 만들수 있다. R과 연결된 모든 빨간색 노드들 R_i에 대해서 B로 시작해서 R_i로 끝나는 누텔라 경로를 유일하게 만들수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23066?rev=1689951162&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-21T14:52:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Stones</title>
        <link>https://teferi.net/ps/problems/boj/23066?rev=1689951162&amp;do=diff</link>
        <description>Stones

풀이

	*  홀수턴에는 상대가 위치선택 -&gt; 내가 갯수선택. 짝수턴에는 내가 위치선택 -&gt; 상대가 갯수선택 으로 진행되는데.. 이렇게 보면 잘 안와닿지만 순서를 바꿔서 생각하면 간단해진다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23116?rev=1692713894&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-22T14:18:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>AND</title>
        <link>https://teferi.net/ps/problems/boj/23116?rev=1692713894&amp;do=diff</link>
        <description>AND

풀이

	*  비트연산의 특징을 이용하는 애드혹 문제.
	*  아이디어를 떠올리는데 예제가 많은 도움을 준다
	*  결과 어레이에 있는 숫자들을 모두 포함해서 원래 어레이를 구성한다면, 숫자 한개 한개도 서브어레이가 되므로 결과 어레이의 숫자들을 모두 만들어낼수 있다. 문제는 결과 어레이에 포함되지 않는 숫자들까지 생성이 되는 것인데 이를 피할 방법을 찾아야 한다. 만약 결과 어레이에 0이 포함되어 있다고 하자. [0, b1, b2,…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23318?rev=1665163298&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-07T17:21:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬분할</title>
        <link>https://teferi.net/ps/problems/boj/23318?rev=1665163298&amp;do=diff</link>
        <description>행렬분할

풀이

	*  행렬분할 2의 쉬운 버전. 행렬분할 2에서는 n이 최대 100이라서 파라메트릭 서치를 사용해야만 했는데, 여기에서는 그냥 백트래킹으로 다 해봐도 답을 구할 수 있는것 같다. 하지만, 그렇게 구현하지는 않았고, 그냥</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23327?rev=1690215722&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-24T16:22:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>리그전 오브 레전드</title>
        <link>https://teferi.net/ps/problems/boj/23327?rev=1690215722&amp;do=diff</link>
        <description>리그전 오브 레전드

풀이

	*  $ (\sum_i{a_i})^2 = {\sum_i{a_i^2}} + 2\sum_i\sum_{j&gt;i}{a_ia_j} $ 라는 것만 떠올리면 된다.
	*  a_i의 누적합과 a_i^2의 누적합을 구해두면, 주어진 쿼리들을 각 O(1)에 처리할수 있다
	*  시간복잡도는 O(n+q)

코드



boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23331?rev=1665162855&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-07T17:14:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>행렬분할 2</title>
        <link>https://teferi.net/ps/problems/boj/23331?rev=1665162855&amp;do=diff</link>
        <description>행렬분할 2

풀이

	*  입력값들의 제한을 살펴보면 m의 범위가 8이하로 굉장히 작다. 세로 방향의 분할방법은 전부 해봤자 C(m-1, b)개 밖에 안되고, 이 모든 경우를 다 시도해봐도 무리가 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23357?rev=1647621929&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-18T16:45:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Gets and Puts (Hard)</title>
        <link>https://teferi.net/ps/problems/boj/23357?rev=1647621929&amp;do=diff</link>
        <description>Gets and Puts (Hard)

풀이

	*  발상:★★, 구현:★★★
	*  큐를 기반으로 하도록 만들어진 Quack 언어로 프로그램을 짜는 문제이다. IPSC에서는 처음 Quack 언어를 만들어서 관련 문제를 내고서는, 재미있다고 느꼈는지 다음해와 다다음해에도 계속 Quack언어를 사용하는 문제를 제시했다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23361?rev=1647623671&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-18T17:14:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>QuackQuack (Hard)</title>
        <link>https://teferi.net/ps/problems/boj/23361?rev=1647623671&amp;do=diff</link>
        <description>QuackQuack (Hard)

풀이

	*  발상:★★★, 구현:★★★
	*  IPSC에서 만든 언어인 Quack를 쓰는 문제
	*  기본적인 발상은 다음과 같다. 계속 dequeue 와 enqueue를 반복하면서 복사할 i번째 원소가 나오면 레지스터에 저장했다가, 붙일 위치가 나오면 붙이고, 다시 복사할 i+1번째 원소가 나오면 레지스터에 저장했다가.. 이런식으로 반복하는 것이다. 이렇게 하면 대충 O(n^2)의 알고리즘이 나오게 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23362?rev=1769323826&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-25T06:50:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rasterized Lines</title>
        <link>https://teferi.net/ps/problems/boj/23362?rev=1769323826&amp;do=diff</link>
        <description>Rasterized Lines

풀이

	*   정사각형와 같은 문제인데, 수의 범위만 더 커진 문제이다.
	*  동일한 방법으로 풀되, N의 모든 약수를 찾을 때와 오일러 피 함수를 계산할 때에, 소인수분해를 나이브한 방법대신에, 폴라드로 알고리즘을 이용해서 빠르게 처리해주기만 하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23540?rev=1740315906&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-23T13:05:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Game with Dominoes</title>
        <link>https://teferi.net/ps/problems/boj/23540?rev=1740315906&amp;do=diff</link>
        <description>Game with Dominoes

풀이

	*  도미노의 높이가 h인 상황을 생각하자. 거리가 h이상 떨어져 있는 도미노들은 서로 영향을 주지 못한다. 거리가 h미만인 도미노들을 그룹으로 묶으면 자기턴에 할 수 있는 일은, 그룹 하나를 고르고 그 그룹에서 원하는 개수만큼의 도미노를 넘어뜨리는 것이다. 결국 도미노 그룹이 돌무더기와 대응되는 님게임과 동일한 게임이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23633?rev=1688490308&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-04T17:05:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>소수 징글벨</title>
        <link>https://teferi.net/ps/problems/boj/23633?rev=1688490308&amp;do=diff</link>
        <description>소수 징글벨

풀이

	*  스코어링 게임이고, 전형적인 minimax DP 풀이를 생각할 수 있다. n의 범위가 최대 2000 이라서 테스트 케이스가 10개라도 O(n^2) DP풀이를 돌리는 데에는 지장이 없다.
	*  점수의 총합이 일정하므로, 선공의 최대 점수만 구해주는 방식을 DP를 짜면 된다. 미리 O(nloglogn) 에 소수목록을 구해놓고 나면, 각 테스트별로 O(n^2)이 걸린다. 제출결과 1136ms 정도가 걸렸다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23736?rev=1689562331&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-17T02:52:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Vertex Merge Game</title>
        <link>https://teferi.net/ps/problems/boj/23736?rev=1689562331&amp;do=diff</link>
        <description>Vertex Merge Game

풀이

	*  함정이 좀 있는 문제이다. 
	*  우선, 웅배가 얻을수 있는 점수의 상한은 maximum spanning tree 에 해당하는 엣지들만 선택했을 경우에 얻는 점수이다. 
	*  그리고 유니가 어떤 식으로 red/blue를 나누든 웅배는 항상 maximum spanning tree에 포함되는 엣지들을 고를수가 있다 (이부분 엄밀한 증명은 생략). 그말은, 웅배는 유니의 행동에 관계 없이 항상 점수의 상한값을 얻을 수 있다는 뜻이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/23818?rev=1668182386&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-11T15:59:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>원수의 원수</title>
        <link>https://teferi.net/ps/problems/boj/23818?rev=1668182386&amp;do=diff</link>
        <description>원수의 원수

풀이

	*  Friend-enemy coloring 문제에서 처리할 것이 조금 더 많아진 문제. 친구와 원수 뿐 아니라 추가적으로 Unknown이나 Error을 처리해야 한다.
	*  적의 적에서 처럼 BFS를 이용해서 컬러링을 구하고, 이때 추가로 연결요소 번호까지 저장해 놓은 다음에, 두 노드가 연결되어 있는지 여부와 컬러가 같은지 여부를 함께 고려하면 답을 O(1)에 찾을수 있다. O(V+E+K)로 해결할 수 있다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24060?rev=1663605585&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-19T16:39:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알고리즘 수업 - 병합 정렬 1</title>
        <link>https://teferi.net/ps/problems/boj/24060?rev=1663605585&amp;do=diff</link>
        <description>알고리즘 수업 - 병합 정렬 1

풀이

	*  그냥 푸는것은 주어진 머지소트의 수도코드를 모두 구현해서 그대로 시뮬레이션을 돌리면서 k번째로 저장되는 수를 체크하기만 하면 된다. 시간복잡도는 머지소트를 돌리다가 k번째에서 멈추므로, O(min(k, nlogn))이 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24268?rev=1642257817&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-01-15T14:43:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2022는 무엇이 특별할까?</title>
        <link>https://teferi.net/ps/problems/boj/24268?rev=1642257817&amp;do=diff</link>
        <description>2022는 무엇이 특별할까?

풀이

	*  N을 d진법으로 바꾼 뒤에, 조건을 만족하는 d자리 숫자를 찾는것은 백트래킹을 잘 써서 구하는 것이 효율적이긴 하다.
	*  하지만 쉽게 구현하려면, 그냥 (0,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24320?rev=1693460202&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-31T05:36:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rectpoints</title>
        <link>https://teferi.net/ps/problems/boj/24320?rev=1693460202&amp;do=diff</link>
        <description>Rectpoints

풀이

	*  비교적 전형적인 테크닉들을 사용하는 문제
	*  우선 1차원에서 생각해보자. y좌표가 모두 동일하다고 가정해본다면, 1차원에서 점을 가장 많이 포함하는 크기 w짜리 구간을 찾는 문제가 된다. 이것을 살짝 변환하면 구간이 가장 많이 겹치는 점을 찾는 문제로도 바꿀수 있다. x에 있는 점을 [x, x+w] 구간으로 바꿔서 생각해서 구간이 가장 많이 겹치는 점 x0를 찾았다고 하자. 이 답을 원래 문제 기준으로 다시 바꾸어 생각하면 [x0-w, x0]이 점을 가장 많이 포함하는 구간이 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24498?rev=1646056969&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-02-28T14:02:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>blobnom</title>
        <link>https://teferi.net/ps/problems/boj/24498?rev=1646056969&amp;do=diff</link>
        <description>blobnom

풀이

	*  i번째 탑을 가장 높게 만들수 있는 방법은, i-1번째 탑이나 i+1번째 탑의 높이가 0이 될때까지 i번째 탑을 선택하는 것이고, 그때의 최대 높이는 x[i] + min(x[i-1], x[i+1])가 된다.
	*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24499?rev=1668739890&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T02:51:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>blobyum</title>
        <link>https://teferi.net/ps/problems/boj/24499?rev=1668739890&amp;do=diff</link>
        <description>blobyum

풀이

	*  슬라이딩 윈도우를 원형 배열에 적용한 형태.
	*  루프를 나눠서 처리할수도 있지만, 그냥 배열 두개를 이어붙여서 구현하는것이 가장 간단하다. 시간복잡도는 O(N)

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24505?rev=1691113076&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-04T01:37:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>blobhyperthink</title>
        <link>https://teferi.net/ps/problems/boj/24505?rev=1691113076&amp;do=diff</link>
        <description>blobhyperthink

풀이

	*  불만 정렬를 더욱 확장시킨 문제. 3개의 원소로 이루어진 튜플을 찾는 것이 10개로 늘어났지만, 기본 방법은 동일하다.
	*  조건을 만족하면서 i번째 원소로 끝나는 l크기의 원소쌍의 갯수를 dp[l][i]이라고 하면, dp[l][..]을 dp[l-1][</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24507?rev=1668497543&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-15T07:32:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>blobfacepalm</title>
        <link>https://teferi.net/ps/problems/boj/24507?rev=1668497543&amp;do=diff</link>
        <description>blobfacepalm

풀이

	*  Langford pairing과 유사한 Skolem sequence를 구하라는 문제이다.
	*  길이 n짜리 Skolem sequence를 만드는 방법은 이미 알려져있다. Langford pairing을 참고.
	*  사전지식이 없는 상태에서 처음부터 생각해내서 풀기는 좀 어려울것 같다. (적어도 내게는 무리였다). n-1이 4m 또는 4m+3 형태일때에만 가능하다는 것을 먼저 발견한다면, 해의 패턴들을 관찰하다가 발견이 가능할지도 모르겠다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24528?rev=1774182199&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-22T12:23:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>단어의 개수</title>
        <link>https://teferi.net/ps/problems/boj/24528?rev=1774182199&amp;do=diff</link>
        <description>단어의 개수

풀이

	*  에디토리얼에서 설명하는 방식은 O(26n)이지만, O(n)으로 풀이가 가능하다.
	*  일반적인 서로 다른 부분 수열의 개수 는 DP를 이용해서 O(n)에 구할 수 있다.
	*  이 점화식에서 S[i]==c 일때 dp값은 이렇게 바뀐다
		*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24533?rev=1772635923&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T14:52:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>결합</title>
        <link>https://teferi.net/ps/problems/boj/24533?rev=1772635923&amp;do=diff</link>
        <description>결합

풀이

	*  주어진 연산은 교환법칙과 결합법칙이 성립한다는 것을 어렵지 않게 확인할 수 있다. 즉, 어떤 순서로 결합하든지 답은 항상 일정하므로, 그냥 순서대로 결합해서 값을 구하면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24553?rev=1711550927&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-27T14:48:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>팰린드롬 게임</title>
        <link>https://teferi.net/ps/problems/boj/24553?rev=1711550927&amp;do=diff</link>
        <description>팰린드롬 게임

풀이

	*  1~9까지는 모두 팰린드롬이다.
	*  일단 0은 패배포지션이고, 1~9는 0으로 이동이 가능하므로 승리포지션이다.
	*  여기서 좀더 나아가면, 현재 끝자리가 0이면 끝자리가 1~9인 수로만 이동이 가능하다. 0으로 끝나는 팰린드롬이 없기 때문이다. 반면, 현재 끝자리가 0이 아니면, 끝자리를 0인 수로 이동이 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24678?rev=1686895624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-16T06:07:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌무더기 게임 1</title>
        <link>https://teferi.net/ps/problems/boj/24678?rev=1686895624&amp;do=diff</link>
        <description>돌무더기 게임 1

풀이

	*  어떤 돌무더기를 골라서 돌을 빼고 더하든, 공통적으로 돌무더기 세개의 홀짝성을 모두 바꾸게 된다.
	*  이 말을 바꾸면, 내 차례에 돌이 홀수개 있는 무더기의 갯수가 0개 또는 1개 였다면, 상대방 차례에는 돌이 홀수개 있는 무더기의 갯수가 2개 또는 3개가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24680?rev=1647621194&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-03-18T16:33:14+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Silver-16</title>
        <link>https://teferi.net/ps/problems/boj/24680?rev=1647621194&amp;do=diff</link>
        <description>Silver-16

풀이

	*  발상:★★★, 구현:★★★
	*  Silver++ 이라는 언어로 프로그래밍하는 문제. 퍼즐문제에 가까운 문제이다.
	*  처음 관찰해야 하는 것은, 현재 칸을 무조건 깨끗하게 만드는 것은 rF로 가능하다는 것. 이렇게 하면 처음에 먼지가 있든 없든 먼지를 없앨수 있지만, 로봇의 이후 위치가 현재칸이 될지 우측 칸이 될지는 알수 없다,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24838?rev=1690876204&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-01T07:50:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배열 구간합 놀이</title>
        <link>https://teferi.net/ps/problems/boj/24838?rev=1690876204&amp;do=diff</link>
        <description>배열 구간합 놀이

풀이

	*  각 인덱스가 몇개의 구간에 포함되는지를 구하고 나면, 가장 많은 구간에 포함되는 인덱스에 가장 큰 값을 배치하는 그리디한 방법으로 총합을 가장 크게 만들수 있다,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/24921?rev=1762136624&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-03T02:23:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Interesting Outing</title>
        <link>https://teferi.net/ps/problems/boj/24921?rev=1762136624&amp;do=diff</link>
        <description>Interesting Outing

풀이

	*  시작점과 끝점을 고정해놓고서 투어를 시작한다고 해보자. 최적 경로로 움직이면, u-&gt;v 단순경로상의 엣지들은 한번씩, 나머지 엣지들은 두번씩 방문하게 된다는 것을 쉽게 알수 있다. 따라서 전체 비용은 {모든 엣지의 비용}*2-{u</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25179?rev=1690029189&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-22T12:33:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>배스킨라빈스~N~귀엽고~깜찍하게~</title>
        <link>https://teferi.net/ps/problems/boj/25179?rev=1690029189&amp;do=diff</link>
        <description>배스킨라빈스~N~귀엽고~깜찍하게~

풀이

	*  가장 기본적인 배스킨라빈스 게임의 일반화.
	*  배스킨라빈스 에서 설명한대로, N-1이 M+1의 배수일때만 후공의 승리, 나머지는 선공의 승리이다

코드



boj ps:problems:boj:실버_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25193?rev=1669431502&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T02:58:22+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>곰곰이의 식단 관리</title>
        <link>https://teferi.net/ps/problems/boj/25193?rev=1669431502&amp;do=diff</link>
        <description>곰곰이의 식단 관리

풀이

	*  치킨이 아닌 음식의 갯수를 N이라고 하면, 치킨을 먹는 날들(=M)을 N+1개의 구간으로 나눌수 있다. 한 구간에 들어가는 치킨수의 최댓값을 최소화하려면 당연히 균일하게 나누어야 하고, 그러면 한 구간에 들어가는 치킨수는 ceil(M/(N+1))이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25194?rev=1669047514&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-21T16:18:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>결전의 금요일</title>
        <link>https://teferi.net/ps/problems/boj/25194?rev=1669047514&amp;do=diff</link>
        <description>결전의 금요일

풀이

	*  합이 7k+4 형태가 되는 부분집합이 존재하는지를 찾으면 된다.
	*  7의 배수인 숫자는 포함하든 안하든 7로 나눈 나머지에 영향을 주지 않으니까 제외시키고, 나머지 7k+c인 숫자들은 포함시키게 되면, 7로 나눈 나머지가 바뀌게 된다. 결국 7의 배수가 아닌 숫자가 6개 이상 있으면 합이 7k+l 이 되는 부분집합을 모든 l에 대해서 다 만들수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25195?rev=1669434122&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T03:42:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Yes or yes</title>
        <link>https://teferi.net/ps/problems/boj/25195?rev=1669434122&amp;do=diff</link>
        <description>Yes or yes

풀이

	*  팬클럽 곰곰이가 있는 노드를 지나지 않고, 싱크 노드까지 가는 경로가 존재하는지 여부를 확인하면 된다.
	*  그냥 팬클럽 곰곰이가 있는 노드를 '벽'으로 지정하고 BFS나 DFS를 돌리면 된다 (2D 그리드에서 미로찾기를 하는 문제들 처럼..). 도달 가능한 노드들 중에서 싱크노드가 있으면 'yes'를 출력하고 아니면 'Yes'를 출력하면 끝.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25196?rev=1669476910&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T15:35:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>숲속에서 새 구경하기</title>
        <link>https://teferi.net/ps/problems/boj/25196?rev=1669476910&amp;do=diff</link>
        <description>숲속에서 새 구경하기

풀이

	*  재미있는 문제. 힌트를 참고해서 풀었다
	*  t가 범위로 주어지는 것이 아니라 Av*k+As=t 와 같은 형태로 값으로 주어지는 조건이었다면, 연립 선형 합동식이 되므로 쉽게 답을 구할수 있었을 것이다. 하지만, 여기에서는 그런 방법은 불가능.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25197?rev=1669477502&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T15:45:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>합주단 곰곰</title>
        <link>https://teferi.net/ps/problems/boj/25197?rev=1669477502&amp;do=diff</link>
        <description>합주단 곰곰

풀이

	*  수학(확률론) 문제. 기댓값의 선형성을 이용하면 식이 한줄로 정리된다.
	*  총 식사 횟수를 바꿔 말하면 식사가 이루어진 페어의 갯수이다. 따라서 총 식사 횟수의 기댓값은, 각 페어당 식사횟수의 기댓값의 합과 같다. 페어당 식사 횟수는 0 또는 1이니까 어떤 페어의 식사 횟수의 기댓값은 그냥 식사가 이루어질 확률과 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25280?rev=1690875175&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-01T07:32:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Marathon</title>
        <link>https://teferi.net/ps/problems/boj/25280?rev=1690875175&amp;do=diff</link>
        <description>Marathon

풀이

	*  간단한 수식으로 확률을 계산해보자. 
	*  내가 걸린 시간이 t일때, 시간 분포가 [ai,bi]인 i번 선수를 이길 확률은, t&lt;a_i 이면 100%, t&gt;b_i이면 0% 이다. 그리고 a_i&lt;t&lt;b_i 일때 이길 확률은 (b_i-t)/(b_i-a_i) 이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25314?rev=1661180358&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-22T14:59:18+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>코딩은 체육과목 입니다</title>
        <link>https://teferi.net/ps/problems/boj/25314?rev=1661180358&amp;do=diff</link>
        <description>코딩은 체육과목 입니다

풀이

	*  기초문제. N/4만큼 long를 출력하고 마지막에 int를 붙인다.

코드



boj ps:problems:boj:브론즈_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25315?rev=1661181589&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-08-22T15:19:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N수매화검법</title>
        <link>https://teferi.net/ps/problems/boj/25315?rev=1661181589&amp;do=diff</link>
        <description>N수매화검법

풀이

	*  베기경로가 교차하는 곳마다 내공이 소모된다. 선분 교차 판정 알고리즘을 사용해서 처리한다.
	*  가중치가 작은 검법을 먼저 사용하는 것이 유리하다. 선분을 가중치순으로 정렬한다음에, 다른 선분들과 교차 여부를 계산해서 내공을 계산해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25501?rev=1663605605&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-09-19T16:40:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>재귀의 귀재</title>
        <link>https://teferi.net/ps/problems/boj/25501?rev=1663605605&amp;do=diff</link>
        <description>재귀의 귀재

풀이

	*  시키는대로 로직을 똑같이 구현해서 돌리면 끝.
	*  그렇지만, 로직이 똑같다고 구현까지 똑같이 꼭 재귀로 해야 하는 것은 아니다. 그냥 반복문으로 구현하는게 더 편하다. 시간복잡도는 똑같은 O(|S|)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25556?rev=1769069555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T08:12:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>포스택</title>
        <link>https://teferi.net/ps/problems/boj/25556?rev=1769069555&amp;do=diff</link>
        <description>포스택

풀이

	*  스택을 이용해서 정렬하는 것 같지만, 스택에 먼저 넣은 수가 더 앞에 위치하게 되므로, 결국은 큐를 이용해서 정렬하는 것에 더 가깝게 되고 Passport Control과 같은 방법으로 풀수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25569?rev=1769613639&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-28T15:20:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>My뷰 꾸미기</title>
        <link>https://teferi.net/ps/problems/boj/25569?rev=1769613639&amp;do=diff</link>
        <description>My뷰 꾸미기

풀이

	*  A&gt;=B라고 하면, sum_1&lt;=k&lt;=B(C(A,k)*C(B,k)) 를 구해야 한다. sum_1&lt;=k&lt;=B(C(A,k)*C(B,B-k))로 바꾸면 반데르몽드 항등식 을 적용해서 C(A+B, B) - 1 로 바꿀 수 있다. 
		*  공식을 몰라도 조합론적으로 생각할수 있다. A+B 전체에서 B개를 뽑는다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25577?rev=1763019645&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T07:40:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>열 정렬정렬 정</title>
        <link>https://teferi.net/ps/problems/boj/25577?rev=1763019645&amp;do=diff</link>
        <description>열 정렬정렬 정

풀이

	*  중복값이 없는 수열을 정렬시키기 위한 최소 스왑 연산 횟수는 N - {순열사이클의 개수}이다 (정렬 (Sorting) 참고)
	*  수열을 좌표압축을 통해 순열로 변환하는데에 O(nlogn), 순열 사이클의 개수를 세는것은 O(n). 총 시간복잡도 O(nlogn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25619?rev=1669431357&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T02:55:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>자취방 정하기</title>
        <link>https://teferi.net/ps/problems/boj/25619?rev=1669431357&amp;do=diff</link>
        <description>자취방 정하기

풀이

	*  가중치가 확률적으로 주어지는 점이 새로울수 있는데, 사실 매우 단순하다. a-b-c 의 루트로 이동하는데에 걸리는 시간의 기댓값은 a-b에 걸리는 시간의 기댓값과 b-c에 걸리는 시간의 기댓값의 합이다 (</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25682?rev=1668736667&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:57:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>체스판 다시 칠하기 2</title>
        <link>https://teferi.net/ps/problems/boj/25682?rev=1668736667&amp;do=diff</link>
        <description>체스판 다시 칠하기 2

풀이

	*  체스판 다시 칠하기를 확장시킨 문제. 체스판 다시 칠하기에서는 K가 8로 고정이었기 때문에, 단순하게 O(M*N*8*8) 알고리즘으로 충분했지만 여기에서는 조금 더 효율적인 알고리즘이 필요하다.
	*  사실 이 문제는 1차원 배열에서 고정된 길이의 부분배열들중 합이 최대가 되는 것을 찾는 문제를 2차원으로 확장시킨 문제이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25821?rev=1680250980&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-03-31T08:23:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Palindromic Primes</title>
        <link>https://teferi.net/ps/problems/boj/25821?rev=1680250980&amp;do=diff</link>
        <description>Palindromic Primes

풀이

	*  범위 안의 회문 소수의 갯수를 찾는 문제.
		*  1990의 어려운 버전.

	*  회문수이면서 소수인 것들을 찾으면 되는데, 두가지 방법이 있을 수 있다.
	*  먼저, 범위안의 소수들을 모두 구한다음에, 각각이 회문수인지 확인하는 방법이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25823?rev=1769609027&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-28T14:03:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>조합의 합의 합</title>
        <link>https://teferi.net/ps/problems/boj/25823?rev=1769609027&amp;do=diff</link>
        <description>조합의 합의 합

풀이

	*  $ \sum _{k=0}^{n}{\binom {n}{k}}^{2}={\binom {2n}{n}} $ (반데르몽드 항등식) 을 적용하면, 문제는 C(6,3) + C(8,4) + C(10,5) + ... + C(2M, M) 을 구하는 것으로 단순화된다
	*  팩토리얼과 그것들의 모듈러 역원들을 전처리해두면 C(n,k)를 O(1)에 구할수 있으므로, 위의 식도 O(M)에 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/25974?rev=1675960269&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-02-09T16:31:09+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>거듭제곱의 합 1</title>
        <link>https://teferi.net/ps/problems/boj/25974?rev=1675960269&amp;do=diff</link>
        <description>거듭제곱의 합 1

풀이

 * 거듭제곱의 합을 계산하는 문제.

	*  풀이 방법은 거듭제곱의 합을 참고. 라그랑주 보간법을 써서 풀면 시간복잡도는 O(nlogn).
	*  n이 최대 1000 밖에 되지 않기 때문에, O(n^2) DP를 이용해도 충분히 풀리긴 한다 (270ms 근처)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/26166?rev=1734440705&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-12-17T13:05:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>끝말잇기 하실 분!!</title>
        <link>https://teferi.net/ps/problems/boj/26166?rev=1734440705&amp;do=diff</link>
        <description>끝말잇기 하실 분!!

풀이

	*  게임 자체는 간단하게 그래프 형태로 변환이 가능하다. 각 알파벳이 노드가 되고, 각 단어는 첫 글자와 끝 글자를 연결하는 방향엣지가 된다.
	*  방향 그래프와 시작 노드가 주어졌을때, 번갈아가면서 엣지를 따라서 다음 노드로 이동하다가, 더 이상 이동이 불가능한 경우 (outdegree가 0인 노드에 도착했을 경우)에 패배하는 형태의 게임은, 게임이론 문제에서 흔히 등장하는 패턴이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/26973?rev=1687528266&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-23T13:51:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Circular Barn</title>
        <link>https://teferi.net/ps/problems/boj/26973?rev=1687528266&amp;do=diff</link>
        <description>Circular Barn

풀이

	*  헛간 하나만 놓고 생각하자. 
	*  제거할수 있는 갯수가 1,2,3개뿐이라면, 배스킨라빈스와 같은 논리로 4의 배수일때는 패배포지션, 나머지는 승리 포지션이 된다.
	*  이 외에도 P개만큼 제거하는것도 가능하지만, P는 소수이고 그래서 4의 배수가 될수 없으므로, P개만큼 제거하는 액션을 취한다고 해도, 기존 패배포지션에서 승리포지션으로 이동하는 것은 불가능하다. 따라서 승리/패배 포지션에는 영향을 미치지 못한다. 여전히 4의 배수는 패배포지션, 나머지는 승리포지션이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27117?rev=1690902392&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-08-01T15:06:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>위문공연</title>
        <link>https://teferi.net/ps/problems/boj/27117?rev=1690902392&amp;do=diff</link>
        <description>위문공연

풀이

	*  전략대로 병사를 움직여보면서 총 이동횟수의 규칙을 찾아보자. 사이클 단위로 총 이동횟수가 결정되고, 사이클 크기에 따른 총 이동횟수는 {사이클 크기}*3 - 2 가 된다. 그러면 N명의 병사들이 k개의 사이클로 나뉘어졌을 경우에 총 이동횟수는 3*N-2*k 가 된다. 사이클 갯수에 따라서 이동횟수가 결정된다!</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27123?rev=1681710779&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-17T05:52:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Electric Fence</title>
        <link>https://teferi.net/ps/problems/boj/27123?rev=1681710779&amp;do=diff</link>
        <description>Electric Fence

풀이

	*  픽의 정리를 이용해서 삼각형 내부의 격자점의 갯수를 구하는 문제
	*  삼각형의 넓이가 m*p/2 로 간단히 계산되는 형태여서, 다각형의 넓이를 구하는 방법을 몰라도 풀 수 있는 문제이다.
	*  총 시간복잡도는 O(logn)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27296?rev=1687326174&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-21T05:42:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>카탈란 마스터의 선분 그리기</title>
        <link>https://teferi.net/ps/problems/boj/27296?rev=1687326174&amp;do=diff</link>
        <description>카탈란 마스터의 선분 그리기

풀이

	*  삼각 분할의 갯수가 카탈란수라는 것은 사실 이 문제를 푸는데에는 전혀 관계 없다.
	*  볼록다각형을 삼각분할할때 대각선의 갯수가 n-3개. 그래서 이 문제에서 점이 n개일때 그려지게 될 선분의 갯수는 선분을 그리는 방법에 관계 없이 항상 2n-3개라는 것만 알면 충분하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27347?rev=1769066115&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T07:15:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Rabbit Carrot</title>
        <link>https://teferi.net/ps/problems/boj/27347?rev=1769066115&amp;do=diff</link>
        <description>Rabbit Carrot

풀이

	*  일단, 높이를 조절해야 기둥 개수를 최소로 하는 것은, 조절하지 않아도 되는 최대 기둥 개수를 찾으면 된다. 이러면 차이가 M 이하인 가장 긴 부분 수열 형태의 문제가 된다. 정확히는 차이가 아니라 증가량이 M이하인 가장 긴 부분 수열의 개념이라서 일반적인 케이스보다 좀 더 쉽게 풀린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27852?rev=1706880435&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-02T13:27:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Kruskal</title>
        <link>https://teferi.net/ps/problems/boj/27852?rev=1706880435&amp;do=diff</link>
        <description>Kruskal

풀이

	*  제목은 페이크. Kruskal 알고리즘과는 전혀 관계가 없는 정수론+게임이론 문제이다. 
	*  힙이 한개만 있다고 생각해보자. 힙에 성냥이 a개가 있다고 하자. a보다 작은 가장 큰 소수를 p라고 하면, a와 p의 차이가 K이하면 선공이 바로 p를 만들어서 이길것이다. a와 p의 차이가 K보다 크다면, 서로 성냥을 제거하다가 성냥이 p+K+1 개 남았을때 자기 차례가 돌아오면 패배하게 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/27871?rev=1686896826&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-06-16T06:27:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Singularity of the Nim</title>
        <link>https://teferi.net/ps/problems/boj/27871?rev=1686896826&amp;do=diff</link>
        <description>Singularity of the Nim

풀이

	*  한번에 가져갈수 있는 코인 갯수의 제한이 없다고 가정하고 생각해보자 (사실은 문제를 잘못 읽어서 이걸 생각해보게 된거였지만...)
	*  승리하는 액션은, 맨 아래 계단에만 코인이 남아있을때, 그 코인들을 싹 가져가는 것이다. 그리고 다른 계단에서 코인을 가져가는 것은, 계단의 위치와 갯수에 무관하게 맨 아래 계단에 코인을 추가하게 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28031?rev=1690216527&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-24T16:35:27+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Milk Sum</title>
        <link>https://teferi.net/ps/problems/boj/28031?rev=1690216527&amp;do=diff</link>
        <description>Milk Sum

풀이

	*  처음 주어진 상태에서 최대로 우유를 생산하는 방법은, 생산량이 많은 소를 가장 오랫동안 짜는 것이다. 소들을 정렬해놓고 앞에서부터 x1,x2,x3,... 을 해서 더한값이 총 생산량이 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28063?rev=1685199992&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-27T15:06:32+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>동전 복사</title>
        <link>https://teferi.net/ps/problems/boj/28063?rev=1685199992&amp;do=diff</link>
        <description>동전 복사

풀이

	*  4방향으로 한번씩 움직이면 모든 칸을 채울수 있다.
	*  동전이 한쪽 벽에 붙어 있는 경우에는, 그쪽 방향으로는 이동하지 않아도 모든 칸을 채울수 있다
		*  그러면 동전이 어떤 모서리에 있다면, 붙어있는 벽이 두개이다. 이때는 이동하지 않아도 되는 방향이 두개이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28064?rev=1685200828&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-27T15:20:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이민희진</title>
        <link>https://teferi.net/ps/problems/boj/28064?rev=1685200828&amp;do=diff</link>
        <description>이민희진

풀이

	*  O(n^2)개의 모든 이름 쌍에 대해서 연결 가능한지 여부를 확인하면 된다.
	*  두개의 이름 n1, n2가 연결 가능한지를 확인하는 가장 나이브한 방법은, n1[:i] 와 n2[-i:]이 같은지를 1≤i≤min(|n1|,|n2|)+1 인 모든 i에 대해서 확인해보는 것이다. l= min(|n1|,|n2|) 이라 하면, O(l^2)의 시간이 걸린다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28065?rev=1685376100&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-29T16:01:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>SW 수열 구하기</title>
        <link>https://teferi.net/ps/problems/boj/28065?rev=1685376100&amp;do=diff</link>
        <description>SW 수열 구하기

풀이

	*  길이가 N인 SW수열에서, 인접한 원소의 차이로 이루어진 수열을 만들면 길이는 N-1이다
	*  SW수열은 1이상 N이하의 수로 만들어져 있으므로, 두 수의 차의 최댓값은 N-1, 최솟값은 1이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28067?rev=1685205031&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-27T16:30:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>기하가 너무 좋아</title>
        <link>https://teferi.net/ps/problems/boj/28067?rev=1685205031&amp;do=diff</link>
        <description>기하가 너무 좋아

풀이

	*  범위가 작기 때문에, 모든 삼각형을 다 만들어보고, 그중에서 합동이 아닌 삼각형들의 갯수를 세는 나이브한 알고리즘도 충분히 돌아간다. 
	*  모든 삼각형을 다 만들어 보는 간단한 방법은, 가능한 모든 세점 조합중에서, 세 점이 삼각형을 이루지 않는 경우만 제외하는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28070?rev=1685412031&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-05-30T02:00:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>유니의 편지 쓰기</title>
        <link>https://teferi.net/ps/problems/boj/28070?rev=1685412031&amp;do=diff</link>
        <description>유니의 편지 쓰기

풀이

	*  비슷한 문제가 이미 많이 존재하는 문제이다. 강의실 배정, 최소 회의실 개수 등과 같은 문제.
	*  강의실 배정, 최소 회의실 개수 과의 차이점은, x월에 입대한 친구와 x월에 전역한 친구가 둘다 존재할때, x월에는 두명이 모두 군대에 있는것으로 처리해줘야 한다는 것. 같은 월에 입대 이벤트와 전역 이벤트가 모두 있을때에는 입대 이벤트가 먼저 처리되도록 정렬 기준을 잡아주면 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28132?rev=1739869844&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-02-18T09:10:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>기벡을 안배운다고?</title>
        <link>https://teferi.net/ps/problems/boj/28132?rev=1739869844&amp;do=diff</link>
        <description>기벡을 안배운다고?

풀이

	*  기울기가 a/b 인 벡터와 수직인 벡터의 기울기는 -b/a 이다. 그러므로 기울기를 모두 계산하고, 기울기별로 벡터 개수를 딕셔너리에 갖고 있으면, 어떤 벡터와 수직인 벡터의 개수를 O(1)에 구할 수 있다. 이것을 모든 벡터에 대해서 계산하면 O(n)에 구할 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28155?rev=1690116884&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-07-23T12:54:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Splitting Pairs</title>
        <link>https://teferi.net/ps/problems/boj/28155?rev=1690116884&amp;do=diff</link>
        <description>Splitting Pairs

풀이

	*  이것도 님게임 변형이라고 해야 할지 애매한데, 돌을 가져가는 것이 아니라 파일을 x개 제거한다. 그리고 남은 파일중 x개를 골라서 각각을 두 파일로 나눔으로써 파일의 갯수를 유지하는 규칙이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28277?rev=1703078666&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-20T13:24:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>뭉쳐야 산다</title>
        <link>https://teferi.net/ps/problems/boj/28277?rev=1703078666&amp;do=diff</link>
        <description>뭉쳐야 산다

풀이

	*  smaller to larger 을 사용하는 가장 기본적인 형태의 문제. 교육용으로 좋을 듯 하다
	*  각 집합을 set으로 관리해주면, 집합 S의 원소 한개를 집합 T에 추가하는 것을 O(1)에 처리할수 있다. 크기가 작은 집합의 원소들을 큰 쪽으로 합쳐준다면 총 시간복잡도는 O(nlogn)에 처리된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28474?rev=1707924408&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-14T15:26:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>피보나치 서로소</title>
        <link>https://teferi.net/ps/problems/boj/28474?rev=1707924408&amp;do=diff</link>
        <description>피보나치 서로소

풀이

	*  피보나치 수의 최대공약수의 특성은 i번째 피보나치수와 j번째 피보나치수의 최대공약수는 gcd(i,j)번째 피보나치수이라는 것이다. 그러면 n번째 피보나치수와 i번째 피보나치수가 서로소가 되려면, gcd(n,i)가 1 또는 2이면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/28754?rev=1713279744&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-04-16T15:02:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Постройка дороги</title>
        <link>https://teferi.net/ps/problems/boj/28754?rev=1713279744&amp;do=diff</link>
        <description>Постройка дороги

풀이

	*  짧은 변의 길이가 1이면 그냥 subtraction game이 되므로 긴 변의 길이가 s+1의 배수인지만 확인하면 계산이 가능하다. 하지만, 이 전략은 짧은 변의 길이가 2 이상으로 길어지면 쉽게 적용되지 않는다. 다른 방식으로 찾아보자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/29042?rev=1758696231&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-09-24T06:43:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Игра</title>
        <link>https://teferi.net/ps/problems/boj/29042?rev=1758696231&amp;do=diff</link>
        <description>Игра

풀이

	*  번역은 &lt;https://www.acmicpc.net/board/view/145743&gt;
	*  나눴을때 최대공약수가 1이 되면 진다. 즉, 최대공약수를 2 이상으로 유지하면서 자기 수를 나누는 동작을 번갈아 가면서 할때, 상대보다 오랫동안 버티는 것이 목표이다. cold game의 느낌.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/29457?rev=1706878660&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-02T12:57:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Игра с графом</title>
        <link>https://teferi.net/ps/problems/boj/29457?rev=1706878660&amp;do=diff</link>
        <description>Игра с графом

풀이

	*  번역은 &lt;https://www.acmicpc.net/board/view/133897&gt; 를 참고
	*  그래프가 분리되지 않도록 하는 엣지들을 지워나가다가, 그것이 불가능해지면 진다.
	*  어떤 엣지를 지워도 그래프가 분리되게 되는 것은 그래프가 트리가 되는 시점이고, 그때의 남은 엣지는 n-1개이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/30108?rev=1729151935&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-17T07:58:55+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>교육적인 트리 문제</title>
        <link>https://teferi.net/ps/problems/boj/30108?rev=1729151935&amp;do=diff</link>
        <description>교육적인 트리 문제

풀이

	*  어떤 노드를 선택하기 위해, 자신의 부모 또한 선택되어 있어야 한다는 조건은 의미가 없다. 부모 노드가 자식노드 보다 더 큰 값을 갖도록 주어져있기 때문에, 큰 노드 부터 선택하면 당연히 부모노드가 먼저 선택된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/30359?rev=1773651037&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-16T08:50:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Tea time in the grand garden</title>
        <link>https://teferi.net/ps/problems/boj/30359?rev=1773651037&amp;do=diff</link>
        <description>Tea time in the grand garden

풀이

	*  문제 출처가 JAG Summer Camp 2023 Day2 와 Petrozavodsk Programming Camp 2024 Summer Day 1 인데, 동일한 문제인데 문제 이름이 다르게 되어있다.
		*  Petrozavodsk camp 의 에디토리얼에서는 문제제목이 Fruit Tea 로 되어있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/30477?rev=1702301757&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-11T13:35:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Blackboard Game</title>
        <link>https://teferi.net/ps/problems/boj/30477?rev=1702301757&amp;do=diff</link>
        <description>Blackboard Game

풀이

	*  직관적으로 후공이 이길수 있는 상황이 별로 없다.
	*  게임이 쭉 진행되어서 마지막 턴이 되었을때, 즉 수가 A,B,C 3개만 남았을때의 상황을 생각해보자. 그 이전턴까지 선공의 숫자의 합이 후공의 숫자의 합보다 큰 상황이라면, 선공은 A,B,C 중에서 가장 큰 수를 고르면 된다. 그러면 후공은 남은 두개의 수중 무엇을 고르더라도 숫자의 합이 같아지게 만들수 없다. 만약 선공의 숫자의 합이 후공의 숫자의 합보다 작다면, 선공은 A,B,C 중 가장 작은 수를 고르면 된다. 그러면, 선공이 이길수 없는 유일한 상황은 그 이전턴까지 선공의 숫자의 합이 후공의 숫자의 합과 같고, 남은 수 세개가 전부 같을 경우이다. 이경우만이 후공이 이길수 있는 유일한 경우이다…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/30855?rev=1701266788&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-11-29T14:06:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Fraction</title>
        <link>https://teferi.net/ps/problems/boj/30855?rev=1701266788&amp;do=diff</link>
        <description>Fraction

풀이

	*  분수를 계산하는 것은, 분자 분모를 따로 저장해서 계산하고, 분자와 분모의 최소공약수로 나누어주면 기약분수 형태를 유지할수 있다. 귀찮으면 파이썬에서는 그냥 fractions 모듈을 쓰면 된다. 속도는 fractions 모듈을 쓰는것이 더 느리지만, 시간이 타이트한 문제가 아니라서 아무 상관 없다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/30984?rev=1702998423&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-12-19T15:07:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>파댕이의 케이크 만들기</title>
        <link>https://teferi.net/ps/problems/boj/30984?rev=1702998423&amp;do=diff</link>
        <description>파댕이의 케이크 만들기

풀이

	*  문제의 조건을 만족하는 순서의 갯수 p는, dyck word 문제를 k개의 알파벳으로 확장한 형태이다. 이는 k차원 카탈랑 수에 해당한다는 사실을 알고 있으면 쉽게 풀수 있다. 
		*</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31027?rev=1755752988&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-21T05:09:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>물고기 게임</title>
        <link>https://teferi.net/ps/problems/boj/31027?rev=1755752988&amp;do=diff</link>
        <description>물고기 게임

풀이

	*  다양한 전략이 존재할 것처럼 보이지만, 중간지점까지 가기 전에 방향을 꺾는 것은 중간지점까지 간 이후에 꺾는 것보다 언제나 하위호환이기 때문에, 실질적으로 유효한 전략은 몇 개 되지 않는다. 내가 전략을 선택했을 때, 다시 그 다음에 상대가 선택할 수 있는 전략을 고려하고, 미니맥스 방식으로 스코어를 계산해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31029?rev=1706238381&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-26T03:06:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Split the SSHS 2</title>
        <link>https://teferi.net/ps/problems/boj/31029?rev=1706238381&amp;do=diff</link>
        <description>Split the SSHS 2

풀이

	*  Boomerangs과 매우 비슷한 문제이다. 사실 Boomerangs 보다 이 문제가 더 어려워보이는데, 난이도는 더 쉽게 매겨져있다..
	*  정점 세 개를 골라 그 정점들을 연결하는 엣지들을 지우는 것이므로, 엣지는 최소 0개에서 최대 3개까지 지워질수 있다. 정점 세개 간에 엣지가 하나도 없다면 지워봤자 바뀌는 것이 없으므로 신경쓰지 않아도 된다. 그러므로 지워야 하는 엣지들을 두 정점 사이의 엣지 1개와, 두 정점들과 세번째 정점 사이의 엣지들 0~2개라고 생각해도 된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31215?rev=1704701165&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T08:06:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>이상한 섞기 연산</title>
        <link>https://teferi.net/ps/problems/boj/31215?rev=1704701165&amp;do=diff</link>
        <description>이상한 섞기 연산

풀이

	*  수학적인 용어와 형식으로 표현한 문제 설명을 이해하는데 약간의 노력이 필요하지만, 문제를 이해하고 나면 풀이는 자명하다
	*  n이 2 이하일때에는, 1은 움직이지 않는다. 그러므로 1의 최종 위치는 변함없이 1이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31216?rev=1704702286&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T08:24:46+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>슈퍼 소수</title>
        <link>https://teferi.net/ps/problems/boj/31216?rev=1704702286&amp;do=diff</link>
        <description>슈퍼 소수

풀이

	*  k번째 소수를 p[k] 라고 쓸때, k가 소수이면 슈퍼소수가 된다. 즉, k번째 슈퍼소수는 p[p[k]] 이다.
	*  예제에 친절하게 3000번째 슈퍼소수가 318137이라고 나와 있으므로, 처음에 318137까지의 소수 목록을 구해 놓으면, 각 쿼리를 O(1)에 처리할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31217?rev=1704716309&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T12:18:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Y</title>
        <link>https://teferi.net/ps/problems/boj/31217?rev=1704716309&amp;do=diff</link>
        <description>Y

풀이

	*  루트 노드를 하나 정하고, 루트와 인접한 노드 3개를 고르면 Y 한개를 만들수 있다. 그러므로, u를 루트로 하는 Y의 개수는 Y와 인접한 노드들 중에서 3개를 뽑는 경우의 수와 같다. C(deg(u), 3)을 O(1)에 계산하면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31218?rev=1704717606&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T12:40:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>자료 구조의 왕</title>
        <link>https://teferi.net/ps/problems/boj/31218?rev=1704717606&amp;do=diff</link>
        <description>자료 구조의 왕

풀이

	*  처음 설명만으로는 문제가 복잡해 보이지만, 입력 부분의 |dx|+|dy|=1이라는 조건때문에 간단해진다. 결국 로봇이 이동 가능한 방향은 가로나 세로뿐이다.
	*  단순히 시뮬레이션으로 처리하려면, 쿼리 하나당 O(n)개의 셀을 업데이트 해줘야 하는데, 쿼리의 갯수가 2*10^5개에, n은 최대 1000이므로 시간이 빡빡할것 같은 느낌이 든다 심지어 문제 제목까지도 자료 구조 어쩌구 저쩌구 하다보니, 복잡한 자료구조를 써서 쿼리 하나를 O(log(n))에 처리해야만 할것 같다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31219?rev=1704720477&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T13:27:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>세계 일주</title>
        <link>https://teferi.net/ps/problems/boj/31219?rev=1704720477&amp;do=diff</link>
        <description>세계 일주

풀이

	*  유클리디안 거리를 이용하는 TSP 문제.
	*  이미 지난 점을 다시 지날수 없다는 제한이 걸려있다. 이 것을 바꿔 말하면, 경로들이 서로 교차하면 안된다는 뜻인다. 그런데 유클리디안 TSP에서 교차하는 경로를 갖는 경로는 최단 경로가 될수 있다는 것은 잘 알려져 있는 사실이다. 결국, 최단경로는 제한에 위배될 일이 없으므로, 제한에 신경쓸 필요 없이, 그냥 최단 경로를 구하면 끝이다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31220?rev=1704724979&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T14:42:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>연결된 지배 집합</title>
        <link>https://teferi.net/ps/problems/boj/31220?rev=1704724979&amp;do=diff</link>
        <description>연결된 지배 집합

풀이

	*  연결된 지배 집합이라는 용어 자체가 복잡해 보이지만, 이해하고 나면 만들어야 할것은 명확하다.
	*  간단하게 출발하는 방법은 홀수행은 모두 0으로, 짝수행은 모두 1로 채우는 것이다. 이렇게 하면 모든 칸들이 인접 4칸 중에 반드시 1로 채운 칸을 갖게 되고, 1의 갯수도 전체의 절반 이하가 되기는 한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31222?rev=1704726030&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T15:00:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>수열과 어렵지 않은 쿼리</title>
        <link>https://teferi.net/ps/problems/boj/31222?rev=1704726030&amp;do=diff</link>
        <description>수열과 어렵지 않은 쿼리

풀이

	*  a[i] 와 a[i+1]이 달라지는 변경점들의 위치들을 기록해놓으면, 일치 구간의 갯수는 {변경점의 개수} + 1 로 구할수 있다
	*  어떤 구간내의 변경점의 개수를 계산하는 것은, 변경점이면 1, 아니면 0을 저장해 놓게 되면 단순한 구간합 쿼리로 처리할 수 있다. 펜윅트리나 세그먼트 트리를 이용하면 O(logn)에 처리가능</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31246?rev=1705308243&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-15T08:44:03+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>모바일 광고 입찰</title>
        <link>https://teferi.net/ps/problems/boj/31246?rev=1705308243&amp;do=diff</link>
        <description>모바일 광고 입찰

풀이

	*  각 광고지면마다 낙찰받기 위해서 올려야 하는 최소 금액을 계산한다 (= max(0, B_i-A_i)). 계산한 값들중 k번째로 큰 값만큼 입찰가를 올린다면, k개의 지면을 낙찰받을수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31247?rev=1705308231&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-15T08:43:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2024는 무엇이 특별할까?</title>
        <link>https://teferi.net/ps/problems/boj/31247?rev=1705308231&amp;do=diff</link>
        <description>2024는 무엇이 특별할까?

풀이

	*  a의 약수들을 d1,d2,...,dl 라고 하자. 
	*  a가 홀수라면 d1,d2,...,dl는 모두 홀수이다.
	*  2^m*a의 약수는 di들과 2*di,2^2*di,2^3*di,...,2^m*di 들이다. di들만 홀수이고 나머지는 모두 짝수이므로, 짝수인 약수의 개수는 홀수인 약수의 개수의 m배가 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31248?rev=1705310287&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-15T09:18:07+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>3+1 하노이 탑</title>
        <link>https://teferi.net/ps/problems/boj/31248?rev=1705310287&amp;do=diff</link>
        <description>3+1 하노이 탑

풀이

	*  다음 방법처럼 처리하면 된다.
		*  1) N개의 원반이 x에 놓여져 있다
		*  2) N-2개의 원반을 x에서 y로 옮긴다. 이때 z를 임시 기둥으로 활용한다. 이것은 일반 하노이 탑과 동일한 방식으로 재귀적으로 처리한다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31249?rev=1705328370&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-15T14:19:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>주행시험장</title>
        <link>https://teferi.net/ps/problems/boj/31249?rev=1705328370&amp;do=diff</link>
        <description>주행시험장

풀이

	*  가장 일반적인 케이스를 생각해보면, m&gt;=n 일때, k=n+1로 잡는것으로 모든 차를 옮길수 있다.
		*  동쪽에서 서쪽으로 갈때는 전방차 n대 + 코너차 1대를 옮기고, 서쪽에서 동쪽으로 돌아올때는 전방차 n대만 갖고 오는 것을 반복하면, 한번 반복 할때마다 동쪽에 있는 코너차가 1대씩 서쪽으로 옮겨지게 된다. 동쪽에 코너차가 n+1대가 남게 되면, 이번에는 코너차 n+1대를 서쪽으로 가져가고 빈손으로 동쪽으로 돌아온 뒤에, 전방차n대를 서쪽으로 옮겨가는 것으로 작업이 마무리된다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31250?rev=1705459985&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-17T02:53:05+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>신제품 개발</title>
        <link>https://teferi.net/ps/problems/boj/31250?rev=1705459985&amp;do=diff</link>
        <description>신제품 개발

풀이

	*  기본적으로는 각각의 이동을 하나씩 처리하는 시뮬레이션을 돌린다. 시간 단축은, 이동 경로가 사이클을 이루게 되면 그래프가 변경될때까지 사이클을 따라 x번 이동하는 것을 한번에 처리해줌으로써 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31263?rev=1706245842&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-26T05:10:42+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>대한민국을 지키는 가장 긴 힘</title>
        <link>https://teferi.net/ps/problems/boj/31263?rev=1706245842&amp;do=diff</link>
        <description>대한민국을 지키는 가장 긴 힘

풀이

	*  이런 비슷한 유형의 문제들에서 흔히 사용되는 방법은 DP이다. 이 문제도 i번째 숫자에 대해서 가장 적은 병사수를 dp[i]에 저장해두면, dp[n]을 dp[n-1], dp[n-2], dp[n-3]으로부터 계산할 수 있으므로, 기본적인 1차원 DP 문제가 되어서 O(n)에 풀 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31264?rev=1706246040&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-26T05:14:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>사격</title>
        <link>https://teferi.net/ps/problems/boj/31264?rev=1706246040&amp;do=diff</link>
        <description>사격

풀이

	*  M번의 사격 후에 A점 이상이 될수 있기 위해, M-1번의 사격 후에 필요한 (점수, 사격실력) 의 범위를 어떻게 구할수 있을것 같고, 이것으로 부터 다시 M-2번, M-3번 ... 후에 필요한 범위를 구할수 있을것 같긴 하다. 영역이 대충 볼록하게 나올테니, 어떻게 잘 하면 될 수고 있을 것 같긴 하지만 복잡할것 같은 생각이 든다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31265?rev=1706246380&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-26T05:19:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>훈련</title>
        <link>https://teferi.net/ps/problems/boj/31265?rev=1706246380&amp;do=diff</link>
        <description>훈련

풀이

	*  아이템들이 그룹단위로 묶여있는 냅색 문제의 변형이다.
	*  그룹단위 냅색에서 가장 흔한 유형은 각 그룹에서 0~1개 또는 1개의 아이템을 고르도록 주어지는 문제들이다. 그 외에, 각 그룹에서 0개 이상의 아이템을 고를 수 있는 문제가 있을수 있는데, 이 경우는 그룹이 없을때와 차이가 없어진다. 그냥 전체 아이템에 대해서 0-1 냅색을 돌리는것과 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31287?rev=1707967406&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-15T03:23:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>장난감 강아지</title>
        <link>https://teferi.net/ps/problems/boj/31287?rev=1707967406&amp;do=diff</link>
        <description>장난감 강아지

풀이

	*  보통 이런 문제를 푸는 요령은 적당한 횟수만큼만 시뮬레이션을 돌려보고, 그때까지 조건을 만족하는 경우가 없다면, 영원히 조건을 만족하는 경우가 없다고 판단하는 것 이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31288?rev=1707985283&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-15T08:21:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>캬루</title>
        <link>https://teferi.net/ps/problems/boj/31288?rev=1707985283&amp;do=diff</link>
        <description>캬루

풀이

	*  주어진 수에서 숫자 하나를 바꿔서 소수가 아닌 수로 만들어야 하는데, 이런 수를 n개를 만들어야 한다
	*  방법이야 다양하겠지만, 쉽게 떠올릴수 있는 방법은, 모든 자릿수의 합이 3의 배수인 수는 3의 배수라는 점을 이용하는 것이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31289?rev=1707986911&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-15T08:48:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>기부왕의 님게임</title>
        <link>https://teferi.net/ps/problems/boj/31289?rev=1707986911&amp;do=diff</link>
        <description>기부왕의 님게임

풀이

	*  주어진 돌더미의 돌 갯수들로부터 승리 여부를 확인하는 것은 기본적인 님 게임과 동일하다. 돌 개수 3개를 모두 xor한 값이 0이 아니면 이긴다
	*  모든 (x,y,z)에 대해서 가능한 최대 기부 금액을 DP를 이용해서 구하면 된다. 그값을 dp[x][y][z] 에 저장하자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31395?rev=1707142728&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-05T14:18:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>정렬된 연속한 부분수열의 개수</title>
        <link>https://teferi.net/ps/problems/boj/31395?rev=1707142728&amp;do=diff</link>
        <description>정렬된 연속한 부분수열의 개수

풀이

	*  어떤 증가하는 연속한 수열의 연속한 부분수열들은 모두 증가하는 부분배열이다. 즉, A[x:x+l]이 증가 수열이라면, x≤i&lt;j≤x+l 인 모든 i,j에 대해서 A[i:j]는 증가 수열이다. 이러한 i,j 쌍의 개수는 comb(l+1,2) 이다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31396?rev=1707144320&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-05T14:45:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>과부화 방지</title>
        <link>https://teferi.net/ps/problems/boj/31396?rev=1707144320&amp;do=diff</link>
        <description>과부화 방지

풀이

	*  멀티탭은 소켓이 많은것부터 사용하는 것이 유리하다. 전자기기는 D값이 큰것들을 나중에 꼽는것이 유리하긴 할텐데, 그렇다고 d값이 작은것부터 꼽는 것은 당연히 최적이 아니라서 바로 풀리지는 않는다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31403?rev=1707141870&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-05T14:04:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A + B - C</title>
        <link>https://teferi.net/ps/problems/boj/31403?rev=1707141870&amp;do=diff</link>
        <description>A + B - C

풀이

	*  그냥 시키는 대로 구현해주면 된다

코드



boj ps:problems:boj:브론즈_4</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31408?rev=1709651044&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:04:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>당직 근무표</title>
        <link>https://teferi.net/ps/problems/boj/31408?rev=1709651044&amp;do=diff</link>
        <description>당직 근무표

풀이

	*  ceil(N/2) 번 이상 당직을 서는 병사가 있으면, 이틀 연속으로 근무하는 것을 피할수 없다. 아무도 ceil(N/2) 번 이상 당직을 서지 않는다면, 아무도 이틀 연속 근무를 하지 않도록 배치가 가능하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31409?rev=1709651055&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:04:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>착신 전환 소동</title>
        <link>https://teferi.net/ps/problems/boj/31409?rev=1709651055&amp;do=diff</link>
        <description>착신 전환 소동

풀이

	*  얼핏 순열 사이클 분할이 필요한 문제로 착각할 수 있는데, 실제로는 훨씬 더 간단하다.
	*  모든 전화기에 착신전환이 걸려있기만 하다면, 전환이 끝나지 않고 계속 이어지므로 무한 대기 상태가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31410?rev=1709651066&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:04:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제독 작전</title>
        <link>https://teferi.net/ps/problems/boj/31410?rev=1709651066&amp;do=diff</link>
        <description>제독 작전

풀이

	*  시작점을 결정하면 제독 순서가 결정된다. 시작점이 왼쪽 끝이나 오른쪽 끝이어야만 최적이 될수 있다는 것은 쉽게 파악할수 있다.
		*  원래 대회에 처음 출제되었을때에는 조건이 조금 달랐다. 한쪽 끝에서 다른쪽 끝으로 이동하면서 순서대로 방문하는 것을 의도하고 낸 문제였지만, 당시의 문제에는 '시작할 위치에서 가까운 순서대로 제독해야 한다'라는 조건이 없었다. 대회가 끝나고 며칠 지나서, 일부러 오염 지점을 건너뛰고 이동했다가 다시 돌아오면서 제독하는게 최적인 반례가 제기되었고, 그 이후에 현재와 같이 문제가 수정되었다.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31411?rev=1709650977&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:02:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>대회 개최</title>
        <link>https://teferi.net/ps/problems/boj/31411?rev=1709650977&amp;do=diff</link>
        <description>대회 개최

풀이

	*  주어진 난이도 커브 공식 $ |x_0-x_1| + |x_1-x_2| + ... +  |x_{N-1} - x_{N}| $ 을 바꿔쓰면 max(x) - min(x) 이 된다. 그러므로 문제들의 난이도들이 결정되면, 난이도커브값은 가장 어려운 난이도와 가장 쉬운 난이도의 차이가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31412?rev=1709650933&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:02:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>군수품 창고 정리</title>
        <link>https://teferi.net/ps/problems/boj/31412?rev=1709650933&amp;do=diff</link>
        <description>군수품 창고 정리

풀이

	*  이 문제처럼 뭔가 아이템들을 고르게(최댓값을 최소로) 분배하는 방법을 찾는 유형은 이분탐색으로 풀리는 경우가 매우 많다.
	*  그 이유는, 최댓값을 제한한채로 아이템을 나누것이 가능한지 아닌지를 확인하는것이 보통 간단하게 되기 때문이다. 최대한 최댓값에 가깝게 분배하도록 시뮬레이션을 해보는 방식으로 확인해보면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31413?rev=1709651094&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:04:54+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>입대</title>
        <link>https://teferi.net/ps/problems/boj/31413?rev=1709651094&amp;do=diff</link>
        <description>입대

풀이

	*  약간의 변형을 거치면 흔한 형태의 DP 문제로 바꿀수 있다.
	*  M점 이상을 모을수 있는 최소 헌혈횟수를 구하기 위해서, 헌혈 횟수가 0번일때의 최대 점수, 1번일때의 최대 점수,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31414?rev=1709651028&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:03:48+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>주둔</title>
        <link>https://teferi.net/ps/problems/boj/31414?rev=1709651028&amp;do=diff</link>
        <description>주둔

풀이

	*  정의된 효용성의 합을 다르게 세어보자. 어떤 부대가 있는 노드에서 인접한 노드들 중에서 부대가 없는 노드의 개수가 그 부대의 효용성이 된다. 그러므로 모든 효용성의 합은, 그래프의 엣지들 중에서 한쪽 끝에는 부대가 있고 다른쪽 끝에는 부대가 없는 엣지의 개수로 셀수도 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31415?rev=1709651191&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:06:31+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>UFO 침공</title>
        <link>https://teferi.net/ps/problems/boj/31415?rev=1709651191&amp;do=diff</link>
        <description>UFO 침공

풀이

	*  우선 간단한 관찰들. UFO의 좌표 계산은 x축과 y축 좌표를 분리해서 계산해줘도 된다.
	*  레이저 빔 쿼리들 중 y축에 평행한 쿼리들만 생각해보자. 레이저빔의 x값이 qx일때 시작위치과 이동거리가 x0, dx인 UFO가 격추되려면 x0, x0+dx, x0+2*dx,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31443?rev=1709652958&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:35:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>준영이</title>
        <link>https://teferi.net/ps/problems/boj/31443?rev=1709652958&amp;do=diff</link>
        <description>준영이

풀이

	*  초콜렛의 크기 N*M가 x라고 했을때, 크기가 같지만 모양이 1*x 인 초콜렛을 생각해보자. 이 초콜렛은 원하는 면적대로 나눌수 있으니까, 결국 어떤수 x를 곱이 최대가 되도록 분할하는 문제가 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31444?rev=1709652997&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-05T15:36:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>줄다리기</title>
        <link>https://teferi.net/ps/problems/boj/31444?rev=1709652997&amp;do=diff</link>
        <description>줄다리기

풀이

코드



	*  Dependency: teflib.combinatorics.linear_homogeneous_recurrence

boj ps:problems:boj:골드_3 ps:teflib:linear_homogeneous_recurrence</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31501?rev=1768665653&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-17T16:00:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>DP (Small)</title>
        <link>https://teferi.net/ps/problems/boj/31501?rev=1768665653&amp;do=diff</link>
        <description>DP (Small)

풀이

	*  DP (Large)의 쉬운 버전. 풀이는 링크 참고. 코드도 동일하다.
	*  제한이 작아서, O(n^2)에 LIS를 구해도 풀리기는 하다.

코드



	*  Dependency
		*  teflib.seqtask.longest_inc_subseq_length_by_last_elem
		*  teflib.seqtask.longest_inc_subseq_length_by_first_elem


boj ps:problems:boj:골드_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31503?rev=1768665602&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-17T16:00:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>DP (Large)</title>
        <link>https://teferi.net/ps/problems/boj/31503?rev=1768665602&amp;do=diff</link>
        <description>DP (Large)

풀이

	*  A[i]를 포함하는 LIS의 길이를 구하라는 문제.
	*  이것은 A[i]로 끝나는 LIS와 A[i]로 시작하는 LIS를 합쳐놓은 것이 된다.
	*  모든 i에 대해서 A[i]로 끝나는 LIS와 A[i]로 시작하는 LIS를 O(nlogn)에 구해두면, 각 쿼리를 O(1)에 처리할수 있다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31648?rev=1711551141&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-27T14:52:21+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Palindrome Game</title>
        <link>https://teferi.net/ps/problems/boj/31648?rev=1711551141&amp;do=diff</link>
        <description>Palindrome Game

풀이

	*  팰린드롬 게임과 동일한 문제. 일의 자리 숫자가 0인지 아닌지만 확인하면 된다.
	*  수의 범위가 훨씬 커졌지만, 어차피 수의 크기와 관계없이 O(1)에 계산 가능하므로 상관 없다. 정수로 변환하지 않고, 문자열 상태에서 마지막 문자를 체크하면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/31687?rev=1711552224&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-03-27T15:10:24+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Trokut</title>
        <link>https://teferi.net/ps/problems/boj/31687?rev=1711552224&amp;do=diff</link>
        <description>Trokut

풀이

	*  삼각형을 만들면 이기는거니까, 상대에서 삼각형을 만들수 있는 찬스를 주면 지게 된다.
	*  바꿔 말하면, 이미 그어진 선분의 꼭짓점을 포함하는 선분을 그리면 안된다는 말이다. 그러면 상대방이 다음에 삼각형을 완성시킬테니.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32374?rev=1740816076&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-01T08:01:16+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>선물 고르기</title>
        <link>https://teferi.net/ps/problems/boj/32374?rev=1740816076&amp;do=diff</link>
        <description>선물 고르기

풀이

	*  상황을 정리해보면 답은 굉장히 간단하다. 내 상자 크기보다 작은 선물 중에서 가장 큰 것이 답이다.
	*  우선, 상자와 선물이 다 정렬되어있다고 생각하자
		*  B[0]&gt;=B[1]&gt;=B[2]&gt;=</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32381?rev=1729053842&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-16T04:44:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Coloring 2: Electric Boogaloo</title>
        <link>https://teferi.net/ps/problems/boj/32381?rev=1729053842&amp;do=diff</link>
        <description>Coloring 2: Electric Boogaloo

풀이

	*  특정 열이나 행을 두 번 뒤집으면 안 뒤집은 것과 동일하다. 어떤 열이나 행을 10000번 뒤집는다고 해도, 그동안 가질 수 있는 상태는, 뒤집혔거나 안 뒤집혔거나의 두 가지 밖에 없다. $Q_i$$Q_i$</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32382?rev=1729052207&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-16T04:16:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌무더기의 정상화</title>
        <link>https://teferi.net/ps/problems/boj/32382?rev=1729052207&amp;do=diff</link>
        <description>돌무더기의 정상화

풀이

	*  우선 가져가는 순서에 대한 규칙은 무시하고 생각해보자. 어떤 순서로든 둘이 돌을 나눠 가졌을때, 가져간 돌의 개수가 같아지게 하는 방법이 존재하는가만 놓고 보면, 전형적인 2-partition 문제이다. Subset sum 문제의 대표유형이고 $ {A_1, A_2, ..., A_N} $$ (/sum A_i) / 2 $</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32462?rev=1741790319&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-12T14:38:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Construct a Coin Set</title>
        <link>https://teferi.net/ps/problems/boj/32462?rev=1741790319&amp;do=diff</link>
        <description>Construct a Coin Set

풀이

	*  동전 집합이 주어졌을때, 그리디 솔루션과 옵티멀 솔루션이 다른 값을 갖게 되는 최소 금액을 찾는 문제는 나름 유명한 문제이다. (Canonical Coin System 여부 체크하기 참고)
	*  여기에서는 역으로 그리디 솔루션과 옵티멀 솔루션이 다른 값을 갖게 되는 최소 금액이 주어졌을때, 거기에 해당하는 동전 집합을 만들라는 문제이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32525?rev=1730184443&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-10-29T06:47:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Duality</title>
        <link>https://teferi.net/ps/problems/boj/32525?rev=1730184443&amp;do=diff</link>
        <description>Duality

풀이

	*  모든 선분이 겹치지 않게 만드는 가장 단순한 방법은, 모든 선분의 기울기를 동일하게 주는 것에서 출발하는 것이다. 이렇게 되면 모든 선분이 평행하므로 한점에서 교차할 일은 없고, 이제 겹치는 경우만 제거해주면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32594?rev=1730704813&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-11-04T07:20:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Kangaroo Race</title>
        <link>https://teferi.net/ps/problems/boj/32594?rev=1730704813&amp;do=diff</link>
        <description>Kangaroo Race

풀이

	*  점프 규칙이 y에 있을때 y(y-1)만큼 앞으로 뛴다고 적혀있는데, 이 말은 곧 y에서 y^2으로 뛴다는 의미이다
	*  그러면 캥거루는 y =&gt; y^2 =&gt; y^4 =&gt; y^8 =&gt; ... =&gt; y^(2^x) 순서로 이동하게 된다. 이 값중에, n으로 나눈 나머지가 1이 되는 가장 작은 x를 찾으면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32683?rev=1768664217&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-17T15:36:57+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Up and Down</title>
        <link>https://teferi.net/ps/problems/boj/32683?rev=1768664217&amp;do=diff</link>
        <description>Up and Down

풀이

	*  가장 긴 바이토닉 부분 수열 과 같은 문제인데, 증가하는 구간과 감소하는 구간이 반드시 둘다 존재해야 한다는 점만 다르다. 기본 풀이는 가장 긴 바이토닉 부분 수열 를 참고하고, 여기에 증가하는 구간과 감소하는 구간이 존재하도록 확인하는 조건문만 추가해주면 된다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32744?rev=1759579981&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-04T12:13:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Tree With One Edge</title>
        <link>https://teferi.net/ps/problems/boj/32744?rev=1759579981&amp;do=diff</link>
        <description>Tree With One Edge

풀이

	*  트리에서 돌을 이동시키는 게임의 변형이다. 트리에 에지를 하나 더 추가했을때 승패가 어떻게 될지를 생각해보면 된다.
	*  노드 u의 승리포지션/패배포지션이 바뀌도록 에지를 추가하는 방법의 수를 dp[u]로 정의해서 tree dp로 구할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32755?rev=1761120555&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-22T08:09:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>차원의 나무 여행</title>
        <link>https://teferi.net/ps/problems/boj/32755?rev=1761120555&amp;do=diff</link>
        <description>차원의 나무 여행

풀이

	*  풀이는 공식 풀이 참고. 증명만 떠올리면 코드는 간단하다.
	*  주어진 트리가 star graph인 경우만 제외하면, 모든 이동을 워프로 할수 있으므로 N을 출력. star graph라면 한번은 워프를 못하고 간선을 따라 이동해야 하므로, N-1을 출력.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32863?rev=1741270879&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-06T14:21:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>점과 원</title>
        <link>https://teferi.net/ps/problems/boj/32863?rev=1741270879&amp;do=diff</link>
        <description>점과 원

풀이

	*  네 점 P,Q,R,S 중에서 우선 P,Q,R 만 생각하자.
	*  세 점 P,Q,R에 대해서 세 점을 지나는 원을 구하면, 원과 세 점과의 거리는 0으로 같다
	*  원의 중심 O 을 그대로 둔 채 반지름만 바꾸면, 각 점과 원과의 거리는 같게 유지된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32871?rev=1737210764&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-18T14:32:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>돌 게임 nm</title>
        <link>https://teferi.net/ps/problems/boj/32871?rev=1737210764&amp;do=diff</link>
        <description>돌 게임 nm

풀이

	*  모든 포지션을 두 가지 그룹으로 나눠서 풀 수 있는 게임이론 문제
	*  일단.. 보드에서 어떤 열, 어떤 행에 돌이 있는지는 중요하지 않다. 돌이 놓여져있는 열과 행의 개수가 각각 몇개인지만 중요하다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32873?rev=1769044705&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T01:18:25+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>나연 정렬</title>
        <link>https://teferi.net/ps/problems/boj/32873?rev=1769044705&amp;do=diff</link>
        <description>나연 정렬

풀이

	*  같은 스택에 들어간 원소간의 순서 관계는 그대로 역순으로 빠지게 되고 중간에 바뀔수 없다. 그러므로 각각의 스택에 들어있는 원소들은 오름차순으로 정렬되어 있어야 한다 (top에 가장 작은 원소가 들어있도록..). 이렇게 하려면 각 스택에 원소를 추가할때에는 내림차순으로 추가해야 한다는 말과 같다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32908?rev=1738140527&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-01-29T08:48:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Programmers and Stones</title>
        <link>https://teferi.net/ps/problems/boj/32908?rev=1738140527&amp;do=diff</link>
        <description>Programmers and Stones

풀이

	*  모든 포지션을 두 가지 그룹으로 나눠서 풀 수 있는 게임이론 문제
	*  모든 포지션을 '모든 파일에 돌이 짝수개인 포지션' 와 '돌이 홀수개 있는 파일이 존재하는 포지션' 으로 나누자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32914?rev=1774588499&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-27T05:14:59+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Balls of Three Colors</title>
        <link>https://teferi.net/ps/problems/boj/32914?rev=1774588499&amp;do=diff</link>
        <description>Balls of Three Colors

풀이

	*  문제는 설명은 심플한데, 풀이를 떠올리는 것이 쉽지는 않다
	*  풀이 방법은 다양하게 있을 것 같다. 적어도 내가 푼 방법은 에디토리얼의 풀이와 다르긴 하다.
	*  내 풀이 기준으로 쓰면, 우선 빨강과 초록를 배치하고, 그 사이사이에 파랑을 끼워넣는 것을 목표로 한다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/32925?rev=1771054110&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-14T07:28:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Just Half is Enough</title>
        <link>https://teferi.net/ps/problems/boj/32925?rev=1771054110&amp;do=diff</link>
        <description>Just Half is Enough

풀이

	*  해결 방법은 다양하게 있지만, 발상만 잘 하면 굉장히 단순하게 풀 수 있는 방법이 있다.
	*  방향 그래프를 2개의 비순환 그래프로 분할하는 방법에서 사용했던 것과 같은 아이디어로, 모든 u-&gt;v 에지는, u&gt;v 인것 또는 u&lt;v 인것의 두가지로 분류될수 있다는 것을 생각하면 된다. 만약, 1,2,3,..,n 으로 오더를 주게 되면 u&lt;v 인 에지는 모두 조건을 만족하게 된다. 그러므로 u&lt;v인 에지가 절반 이상이라면 이것으로 해결된다. 절반 미만이라면, n,n-1,…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33229?rev=1769046428&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-22T01:47:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Alleys Construction</title>
        <link>https://teferi.net/ps/problems/boj/33229?rev=1769046428&amp;do=diff</link>
        <description>Alleys Construction

풀이

	*  문제 자체는 1670과 동일하다. n/2번째 카탈랑 수 (Catalan Number)를 구하면 된다.
	*  난이도를 올리는 것은, 이 카탈랑 수를 313109 로 나눈 나머지를 구하는 것. 313109는 소수이기는 하지만, n보다 작을 수 있기 때문에, 일반적인 방법으로는 안되고,</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33274?rev=1773237514&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-11T13:58:34+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>적당한 휴식은 필수</title>
        <link>https://teferi.net/ps/problems/boj/33274?rev=1773237514&amp;do=diff</link>
        <description>적당한 휴식은 필수

풀이

	*  N*N 격자라면 행과 열의 개수의 합은 2N이므로 만들수 있는 답의 상한은 2N이다.
	*  그렇지만, N이 홀수일때를 생각해보면 답이 2N이 되는것이 불가능한것을 보일수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33392?rev=1755753255&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-21T05:14:15+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Simple Game</title>
        <link>https://teferi.net/ps/problems/boj/33392?rev=1755753255&amp;do=diff</link>
        <description>Simple Game

풀이

	*   물고기 게임와 동일한 세팅의 문제이다. 풀이는 그쪽을 참고.

코드



boj ps:problems:boj:플래티넘_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33416?rev=1759577871&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-10-04T11:37:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A Tree Game</title>
        <link>https://teferi.net/ps/problems/boj/33416?rev=1759577871&amp;do=diff</link>
        <description>A Tree Game

풀이

	*  트리 위에서 돌을 이동시키는 형태의 게임의 변형이라고 봐도 된다.
	*  번갈아가면서 이동시키는게 아니라, 번갈아가면서 한명은 에지 하나에 이동불가 마크를 추가하고, 한명은 돌을 이동시킨다. 차수가 1인 노드까지 이동시키는데에 성공하면 승리.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33532?rev=1774968002&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-31T14:40:02+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Efficient Printing</title>
        <link>https://teferi.net/ps/problems/boj/33532?rev=1774968002&amp;do=diff</link>
        <description>Efficient Printing

풀이

	*  팩토리얼 0의 개수 과 같은 문제. 르장드르 공식 (Legendre's formula)을 이용해서 N!을 소인수분해했을때 5의 지수를 구하면 된다. 시간복잡도는 O(logn)

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33550?rev=1740845392&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-03-01T16:09:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Composius' Wrath</title>
        <link>https://teferi.net/ps/problems/boj/33550?rev=1740845392&amp;do=diff</link>
        <description>Composius' Wrath

풀이

	*  길이가 소수인 에지들을 먼저 사용해서 도시들을 합쳐주고, 그 다음에 나머지 에지들을 사용해서 아직 떨어져있는 도시들을 합쳐주면 된다.
		*  소수인 에지의 가중치를 0, 소수가 아닌 에지의 가중치를 1로 두고 그래프를 만들어서</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33837?rev=1747321573&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-15T15:06:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>gcd와 set</title>
        <link>https://teferi.net/ps/problems/boj/33837?rev=1747321573&amp;do=diff</link>
        <description>gcd와 set

풀이

	*  먼저 당연한 사실을 언급하면, 집합에 원소가 추가될때마다 그 집합의 gcd는 작아진다.
	*  우선, 중복된 수는 몇 개가 있으나 의미가 없다. 중복된 수를 제거하고 나면, 원소 개수는 최대 5000이하로 줄어든다.$\text{gcd}_A(S') $$ \text{gcd}_A(S \setminus S')$$\text{gcd}_A(S') $$ \text{gcd}_A(S \setminus S')$</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33909?rev=1748008710&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-23T13:58:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알파벳 블록</title>
        <link>https://teferi.net/ps/problems/boj/33909?rev=1748008710&amp;do=diff</link>
        <description>알파벳 블록

풀이

	*  풀이는 에디토리얼 참고
	*  시간복잡도는 O(1)

코드



boj ps:problems:boj:브론즈_3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33910?rev=1748008864&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-23T14:01:04+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>합의 최소</title>
        <link>https://teferi.net/ps/problems/boj/33910?rev=1748008864&amp;do=diff</link>
        <description>합의 최소

풀이

	*  풀이는 에디토리얼 참고
	*  시간복잡도는 O(1)

코드



boj ps:problems:boj:실버_5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33911?rev=1748010570&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-23T14:29:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>특별상 눈치게임</title>
        <link>https://teferi.net/ps/problems/boj/33911?rev=1748010570&amp;do=diff</link>
        <description>특별상 눈치게임

풀이

	*  팀의 수를 n, 정수의 범위를 m이라고 하자.
	*  n과 m이 작아서 에디토리얼의 풀이처럼 O(n + m^4)의 브루트포스로도 풀린다
	*  좀더 효율적으로 풀려면, 특별상에 해당되는 점수를 X로 만드는 정수 조합의 개수를 각각 세어주는 방식으로 접근하자</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33912?rev=1748011177&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-05-23T14:39:37+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>N거리 건너기</title>
        <link>https://teferi.net/ps/problems/boj/33912?rev=1748011177&amp;do=diff</link>
        <description>N거리 건너기

풀이

	*  풀이는 에디토리얼 참고
	*  시간복잡도는 O(n)

코드



boj ps:problems:boj:실버_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33913?rev=1748856553&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-02T09:29:13+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>even 하게 익은 SCON</title>
        <link>https://teferi.net/ps/problems/boj/33913?rev=1748856553&amp;do=diff</link>
        <description>even 하게 익은 SCON

풀이

	*  에디토리얼 에는 DP 풀이, 조합론적 풀이, 일반항을 찾는 풀이가 모두 나와있다.
	*  DP풀이와 조합론적 풀이는 둘다 쉽게 떠올릴 수 있는 발상이다.
	*  DP로 풀 경우, 에디토리얼의 점화식을 그대로 따르면 O(n)이지만, 선형연립접화식이므로 행렬거듭제곱을 이용해서 최적화하면 O(logn)까지 단축시키는 것도 가능하다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33914?rev=1749107170&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-05T07:06:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A = B ⊕ C</title>
        <link>https://teferi.net/ps/problems/boj/33914?rev=1749107170&amp;do=diff</link>
        <description>A = B ⊕ C

풀이

	*  기본 아이디어는 에디토리얼 에 설명되어있다
		*  원소 3개를 한 그룹으로 묶어서 생각할때, 1을 두개 0을 한개 사용하는 방법이 3가지, 0만 세개 사용하는 방법이 1가지

	*  그렇지만 에디토리얼에서는 이것을 기반으로 O(XY)의 DP로 푸는 방법만 설명하고 있는데, 실제로는 조합론적 풀이가 더 효율적이고 딱히 어렵지도 않다. 오히려 이게 더 쉬운 느낌인데..</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33915?rev=1749107153&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-06-05T07:05:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>불꽃놀이의 아름다움 2</title>
        <link>https://teferi.net/ps/problems/boj/33915?rev=1749107153&amp;do=diff</link>
        <description>불꽃놀이의 아름다움 2

풀이

	*  풀이는 에디토리얼 참고
	*  그래프가 단순사이클을 한개만 갖고 있는 형태라는 것을 눈치채면, 답은 최대 3이라는 것을 알수 있으므로, 2-colorable 인지만 확인하면 된다. 시간복잡도는 O(V+E)이므로 O(N)이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/33995?rev=1770466523&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-07T12:15:23+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>LCS Making</title>
        <link>https://teferi.net/ps/problems/boj/33995?rev=1770466523&amp;do=diff</link>
        <description>LCS Making

풀이

	*  주어진 문자열과 LCS가 특정 길이가 되는 문자열의 존재 여부를 찾는 문제. 간단한 방법으로 O(n)에 처리 가능하다
		*  주어진 S와의 LCS의 길이가 최소가 되는 수열 찾기 참고.  


코드



boj ps:problems:boj:골드_2</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34019?rev=1772637912&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-04T15:25:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>[G] Grounded Number</title>
        <link>https://teferi.net/ps/problems/boj/34019?rev=1772637912&amp;do=diff</link>
        <description>[G] Grounded Number

풀이

	*  매 턴 지날때마다 k는 항상 1씩 증가한다. 반면 N은 증가하거나 감소하거나 한다. N-k는 일정하거나 2만큼 줄어들거나 하고, 언젠가는 N이 k보다 작거나 같아지게 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34036?rev=1751554030&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-07-03T14:47:10+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>걸어가요</title>
        <link>https://teferi.net/ps/problems/boj/34036?rev=1751554030&amp;do=diff</link>
        <description>걸어가요

풀이

	*  모일 수 있는 위치를 P라고 하면, P = Xi + Si*k 이다. 식을 바꿔쓰면, P ≡ Xi (mod Si) 형태의 연립선형합동식이 된다.
	*  연립선형합동식을 풀어서 해를 x0 + m*k 형태로 구한 뒤에, 모든 Xi보다 크거나 같은 최소의 해를 찾으면 된다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34078?rev=1763038353&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T12:52:33+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>벨과 와이즈의 가게 홍보</title>
        <link>https://teferi.net/ps/problems/boj/34078?rev=1763038353&amp;do=diff</link>
        <description>벨과 와이즈의 가게 홍보

풀이

	*  웅나한 bangboo들의 수가 최대가 되는 경우는, bangboo들이 정렬되어 있을 때이다. 오름차순 또는 내림차순 두가지로 정렬이 가능하다.
		*  이 경우에 양 끝의 bamboo들을 제외한 나머지는 모두 웅냐하다. 즉, 웅냐한 bangboo들의 수는 N-2개.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34124?rev=1755759289&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-21T06:54:49+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A의 배수</title>
        <link>https://teferi.net/ps/problems/boj/34124?rev=1755759289&amp;do=diff</link>
        <description>A의 배수

풀이

	*  만약 아무 제약이 없다면, 매턴 1개씩 지울수 있으므로, N이 홀수면 선공의 승리, N이 짝수면 후공의 승리이다
	*  제약이 유효한 경우는, 마지막에 x와 Ax만이 남아있는 상태에서, 현재 턴 플레이어가 Ax를 지우는 경우 뿐이다. 하지만, 한 플레이어가 저 상황을 만들려고 아무리 노력해도 상대는 그렇게 남지 않도록 만드는 방법이 존재한다. 그러므로 제약이 없다면 패배하는 플레이어가 저 제약을 이용해서 승리하는 것은 불가능하다. 다만 그것이 가능한 유일한 경우는 A=N=2일 경우인데, 이때는 후공이 2를 지움으로써 승리하는 것이 가능하다. 그 경우만 예외처리해주면 끝.…</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34130?rev=1755758692&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-08-21T06:44:52+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Yet Another Stone Game</title>
        <link>https://teferi.net/ps/problems/boj/34130?rev=1755758692&amp;do=diff</link>
        <description>Yet Another Stone Game

풀이

	*  가능한 상태들을 잘 분류해서 승리 전략을 하나씩 따져보면 되긴 하는데 간단하지는 않다.
	*  돌이 홀수개인 돌더미를 홀수더미, 돌이 짝수개인 돌더미를 짝수더미라고 하자.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34728?rev=1763018925&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-11-13T07:28:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>스왑 스왑</title>
        <link>https://teferi.net/ps/problems/boj/34728?rev=1763018925&amp;do=diff</link>
        <description>스왑 스왑

풀이

	*  두번의 스왑이므로, 순열의 패리티가 보존된다. 따라서 주어진 순열이 홀순열이라면 정렬이 불가능하다.
	*  짝순열인 경우 정렬이 가능하다는 것은, i와 j를 같은 값으로 두면 주어진 연산이 인접 3개 원소를 로테이션하는것과 동일해진다는 것을 통해서 알수 있다. 인접 3개 원소를 로테이션 하는 연산으로 원하는 순열로 변환이 가능하다는 것은</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34764?rev=1764596348&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-01T13:39:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>고양이 게임</title>
        <link>https://teferi.net/ps/problems/boj/34764?rev=1764596348&amp;do=diff</link>
        <description>고양이 게임

풀이

	*  [에디토리얼]에서는 강제수를 따라가면서 관찰하면 4칸마다 같은 패턴이 반복된다고 간단하게 설명하고 있다.
	*  좀 더 구체적으로 따져보자. 오른쪽으로 1칸 이동을 +1로 표기하자. 선공의 첫수는 좌우대칭이므로 그냥 +1로 간주하면, 후공은 -2와 +2 둘중 하나를 선택할수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34769?rev=1766890391&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-28T02:53:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>트리 게임</title>
        <link>https://teferi.net/ps/problems/boj/34769?rev=1766890391&amp;do=diff</link>
        <description>트리 게임

풀이

	*  A가 B를 잡을 수 있는 경우는, A와 B가 인접해있어서 첫수에 A가 B를 잡을수 있는 경우와, B가 막다른 길에 몰려있어서 A가 다가올때 B가 반대쪽으로 도망갈 수가 없는 경우, 이렇게 크게 두가지 뿐이다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34826?rev=1769694036&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-29T13:40:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Yonsei TOTO 2</title>
        <link>https://teferi.net/ps/problems/boj/34826?rev=1769694036&amp;do=diff</link>
        <description>Yonsei TOTO 2

풀이

	*  이전 문제였던 Yonsei TOTO 이 2016년도 대회에서 나온지 거의 10년이 지난 2025년 대회에서 후속 문제가 나왔다. 그동안 학교의 수강신청 방식이 실제로 이렇게 바뀌었는지는 모르겠다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/34982?rev=1767104891&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-12-30T14:28:11+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>룩 vs 폰</title>
        <link>https://teferi.net/ps/problems/boj/34982?rev=1767104891&amp;do=diff</link>
        <description>룩 vs 폰

풀이

	*  경우를 나눠서 생각해보자.
	*  먼저 처음 보드에 폰이 룩과 같은 파일에 있는 경우 (M&lt;=N), 이때는 그냥 첫수에 룩이 폰을 먹으면 끝난다. 답은 1회
	*  M&gt;N 일 경우에는, 룩이 폰과 같은 파일로 이동한 뒤에 올라가서 잡아야 하므로, 최소 2수 이상이 걸린다. 폰의 개수에 따라서 달라진다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/35127?rev=1768635100&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-01-17T07:31:40+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Game of Names</title>
        <link>https://teferi.net/ps/problems/boj/35127?rev=1768635100&amp;do=diff</link>
        <description>Game of Names

풀이

	*  열심히 풀고 풀이도 써놨는데, 다 쓰고서 공식 풀이를 보니까 단순한 관찰을 추가해서 훨씬 간단하게 푸는 방법이 있었다.
	*  원래 적어놨던 풀이와 코드는 망글이 되었지만, 지우지는 않고 그냥 접어놓기만 하겠다</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/35286?rev=1771939907&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-02-24T13:31:47+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>지하철! 지하철! 몇호선? 몇호선?</title>
        <link>https://teferi.net/ps/problems/boj/35286?rev=1771939907&amp;do=diff</link>
        <description>지하철! 지하철! 몇호선? 몇호선?

풀이

	*  한쪽이 막혀있는 상황에서 시작하는 경우를 생각해보자. 다시말하면 선공이 1을 부르고 시작하는 경우이다.
		*  이제부터 이후에 어떤식으로 후공이 선택하든, 선공은 모든 칸을 방문하도록 부를 수 있다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EA%B3%B0%EA%B3%B0%EC%BB%B5?rev=1669434246&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-26T03:44:06+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>곰곰컵</title>
        <link>https://teferi.net/ps/problems/boj/%EA%B3%B0%EA%B3%B0%EC%BB%B5?rev=1669434246&amp;do=diff</link>
        <description>곰곰컵

1회 곰곰컵

	*  2022년 5월 14일 개최
	*  공식 풀이 슬라이드
문제 번호Page레벨분류25193곰곰이의 식단 관리실버 525914결전의 금요일실버 125195Yes or yes골드 425196숲속에서 새 구경하기골드 125197합주단 곰곰골드 3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EB%8B%A8%EA%B3%84%EB%B3%84?rev=1668736436&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:53:56+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>BOJ / 단계별</title>
        <link>https://teferi.net/ps/problems/boj/%EB%8B%A8%EA%B3%84%EB%B3%84?rev=1668736436&amp;do=diff</link>
        <description>BOJ / 단계별

함수

	*  &lt;https://www.acmicpc.net/step/5&gt; (총 3문제)
문제 번호Page레벨분류1065한수실버 415596정수 N개의 합브론즈 24673셀프 넘버실버 5
누적 합

	*  &lt;https://www.acmicpc.net/step/48&gt; (총 6문제)
문제 번호Page레벨분류10986나머지 합골드 311659구간 합 구하기 4실버 311660구간 합 구하기 5실버 116139인간-컴퓨터 상호작용실버 12559수열실버 425682체스판 다시 칠하기 2골드 5</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EB%9D%BC%EC%9D%B4_%EB%B8%94%EB%A1%9C%EA%B7%B8_%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1668736710&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-18T01:58:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>라이(kks227) 블로그 문제집</title>
        <link>https://teferi.net/ps/problems/boj/%EB%9D%BC%EC%9D%B4_%EB%B8%94%EB%A1%9C%EA%B7%B8_%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1668736710&amp;do=diff</link>
        <description>라이(kks227) 블로그 문제집

6. 이분 탐색(Binary Search)

7. 리스트(List), 배열(Array), 연결 리스트(Linked List)

	*  강의글 : &lt;https://blog.naver.com/kks227/220781402507&gt;
	*  백준 문제집 : &lt;https://www.acmicpc.net/workbook/view/3248&gt;
문제 번호Page레벨분류1021회전하는 큐실버 41158요세푸스 문제실버 51406에디터실버 22346풍선 터뜨리기실버 3</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1774533459&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-03-26T13:57:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>알고리즘별 문제집</title>
        <link>https://teferi.net/ps/problems/boj/%EB%AC%B8%EC%A0%9C%EC%A7%91?rev=1774533459&amp;do=diff</link>
        <description>알고리즘별 문제집

그리디

조합론

	*  완전 순열 (by wlaud)
		*   선물 전달
		*   기숙사 재배정
		*   배드민턴 대회
		*   알고리즘 기말고사
		*   영훈이의 색칠공부</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EB%B8%94%EB%A1%AD%EC%BB%B5?rev=1668436888&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-11-14T14:41:28+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>블롭컵</title>
        <link>https://teferi.net/ps/problems/boj/%EB%B8%94%EB%A1%AD%EC%BB%B5?rev=1668436888&amp;do=diff</link>
        <description>블롭컵

제1회 블롭컵

	*  2022년 2월 21일 개최
	*  공식 해설</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EC%8B%A4%ED%96%89%EC%8B%9C%EA%B0%84?rev=1665165410&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-10-07T17:56:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>실행시간 1등 달성 문제들 / 나만 푼 문제들</title>
        <link>https://teferi.net/ps/problems/boj/%EC%8B%A4%ED%96%89%EC%8B%9C%EA%B0%84?rev=1665165410&amp;do=diff</link>
        <description>실행시간 1등 달성 문제들 / 나만 푼 문제들

나만 푼 문제

Python3 &amp;&amp; PyPy3
문제  난이도  실행시간  맞힌사람(전체)  푼 날짜 타일 놓기플래티넘 1156ms45명2022/03/23보드 색칠하기다이아몬드 3160ms22명2022/03/23스포츠 전문 채널 GSK다이아몬드 3160ms</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EC%9B%94%EA%B0%84_%ED%96%A5%EC%9C%A0%ED%9A%8C_2024._01?rev=1707963703&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-15T02:21:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>월간 향유회 2024. 01.</title>
        <link>https://teferi.net/ps/problems/boj/%EC%9B%94%EA%B0%84_%ED%96%A5%EC%9C%A0%ED%9A%8C_2024._01?rev=1707963703&amp;do=diff</link>
        <description>월간 향유회 2024. 01.

PS 향유회에서 매월 마지막 주 토요일에 개최하는 정기 대회인 '월간 향유회'의 2024년 첫 대회.

	*  2024년 1월 28일 19:00 ~ 2024년 1월 28일 21:00 (2시간)
	*  총 4문제 (실버~플래티넘)</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%EB%B3%B4%EB%9D%BC%EB%A7%A4%EC%BB%B5_%EC%98%88%EC%84%A0?rev=1706245580&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-26T05:06:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제3회 보라매컵 예선</title>
        <link>https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%EB%B3%B4%EB%9D%BC%EB%A7%A4%EC%BB%B5_%EC%98%88%EC%84%A0?rev=1706245580&amp;do=diff</link>
        <description>제3회 보라매컵 예선

	*  2024년 1월 21일 18:00 ~ 2024년 1월 21일 21:00 (3시간)
	*  총 6문제 (실버~플래티넘)
	*  에디토리얼: 링크
	*  특이사항
		*  모든 문제가 서브태스크 문제

	*  출제 분야
		*  이분탐색, 냅색, 태스크 스케쥴링, 오프라인 쿼리, 모든 쌍 최단경로</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%ED%9D%90%EC%A6%88%EB%A1%9C%EC%BB%B5?rev=1704702525&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-01-08T08:28:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>제3회 흐즈로컵 (The 3rd Chromate Cup) Algorithm Division</title>
        <link>https://teferi.net/ps/problems/boj/%EC%A0%9C3%ED%9A%8C_%ED%9D%90%EC%A6%88%EB%A1%9C%EC%BB%B5?rev=1704702525&amp;do=diff</link>
        <description>제3회 흐즈로컵 (The 3rd Chromate Cup) Algorithm Division

	*  이상한 섞기 연산
	*  슈퍼 소수
	*  Y
	*  자료 구조의 왕
	*  세계 일주
	*  연결된 지배 집합
	*  31221
	*  수열과 어렵지 않은 쿼리
	*  31223
	*  31224
	*  31225</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/boj_%EC%A2%85%EB%A3%8C?rev=1776349099&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-16T14:18:19+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>BOJ 서비스 종료에 관해</title>
        <link>https://teferi.net/ps/problems/boj/boj_%EC%A2%85%EB%A3%8C?rev=1776349099&amp;do=diff</link>
        <description>BOJ 서비스 종료에 관해

	*  PS를 제대로 시작한 이래 가장 큰 사건이 생겼다. BOJ가 2주뒤 (2026/04/28)에 서비스가 종료된다는 공지가 올라왔다.
	*  전체적으로 PS를 왜 하고 있는지, 목표가 무엇인지를 돌아봐야만 할 필요가 생겼다.</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/python%EC%9C%BC%EB%A1%9C_tle%EA%B0%80_%EB%82%98%EB%8A%94_%EB%AC%B8%EC%A0%9C?rev=1682423931&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2023-04-25T11:58:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>BOJ / Python으로 TLE가 나는 문제</title>
        <link>https://teferi.net/ps/problems/boj/python%EC%9C%BC%EB%A1%9C_tle%EA%B0%80_%EB%82%98%EB%8A%94_%EB%AC%B8%EC%A0%9C?rev=1682423931&amp;do=diff</link>
        <description>BOJ / Python으로 TLE가 나는 문제

최적화를 거쳐서 Python3으로 풀리는 문제

	*  Washer
		*  python 시간제한 5초. 
		*  정해인 O(n^4) 알고리즘으로는 python3.11 TLE, PyPy3 2212ms.
		*  k-means clustering으로 python3.11 3600ms</description>
    </item>
    <item rdf:about="https://teferi.net/ps/problems/boj/start?rev=1776348972&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2026-04-16T14:16:12+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>백준 온라인 저지 (BOJ)</title>
        <link>https://teferi.net/ps/problems/boj/start?rev=1776348972&amp;do=diff</link>
        <description>백준 온라인 저지 (BOJ)

	*  2026년 04월 28일부로 서비스가 종료되었다
	*  BOJ 서비스 종료에 관해 

관련 페이지

	*  '단계별로 풀어보기'에 포함된 문제들
	*  BOJ / Python으로 TLE가 나는 문제
	*  실행시간 1등 달성 문제들 / 나만 푼 문제들 (Python/PyPy)

문제집

	*  알고리즘별 문제집
	*  (기본적으로는 '단계별로 풀어보기' 와 'solved.ac class' 이 두가지가 1순위이다)</description>
    </item>
</rdf:RDF>
