Faits : A. Ressortissante portugaise née en 1947, A._, est arrivée en Suisse en septembre 2014, en provenance d'Allemagne où elle vivait depuis 1970. Elle s'est mariée en 2014 avec B._ (né en 1951). Domiciliés à U._, les époux B._/A._ n'exercent plus d'activité lucrative et bénéficient tous deux de rentes de vieillesse; celle de B._ est allouée par l'assurance-vieillesse et survivants suisse, tandis que A._ perçoit des rentes de vieillesse versées par les institutions "Versorgungswerk der Rechtsanwälte in Baden-Württemberg" et "Deutsche Rentenversicherung Bund - DRV". Le 25 novembre 2014, l'Office cantonal neuchâtelois de l'assurance-maladie (ci-après: l'OCAM) a invité B._ à lui indiquer si son épouse était déjà affiliée à une caisse-maladie pour l'assurance obligatoire des soins et à lui transmettre la police d'assurance dans le délai imparti; à défaut, A._ se verrait affiliée d'office auprès de Philos Assurance Maladie SA dès le 1er septembre 2014. Le 16 janvier 2015, la prénommée a répondu à l'OCAM que Mutuel Assurance Maladie SA avait refusé sa demande d'adhésion, considérant qu'en tant que titulaire d'une rente provenant d'un Etat membre de l'Union européenne, elle était tenue de s'affilier auprès de la sécurité sociale du pays de provenance de son revenu (courrier de la caisse-maladie du 15 janvier 2015). Après être intervenu auprès de Mutuel Assurance Maladie SA et avoir pris des renseignements auprès de l'Institution commune LAMal ainsi que de l'Office fédéral de la santé publique (OFSP), l'OCAM a fait savoir à l'intéressée qu'en tant que "rentière allemande" et du fait qu'elle était toujours couverte par l'assurance-maladie SDK Süddeutsche Krankenversicherung (ci-après: SDK), elle ne pouvait pas être affiliée auprès d'une assurance-maladie au sens de la législation suisse (courrier du 7 octobre 2015). Par décision du 16 janvier 2019, confirmée le 12 mars suivant sur opposition de A._, l'OCAM l'a dispensée de l'obligation d'assurance au sens de la LAMal. B. Saisi d'un recours de A._, le Tribunal cantonal de la République et canton de Neuchâtel, Cour de droit public, l'a rejeté par jugement du 5 août 2019. C. Agissant par la voie du recours en matière de droit public, A._ demande au Tribunal fédéral d'annuler le jugement cantonal, la décision sur opposition du 12 mars 2019 et la décision du 16 janvier 2019. Elle conclut à ce qu'il soit constaté qu'elle est soumise à l'obligation de s'assurer en Suisse pour les soins en cas de maladie et qu'elle a, en conséquence, droit de choisir une assurance-maladie suisse. L'OCAM n'a pas souhaité s'exprimer sur le recours. L'OFSP a été invité à se déterminer sur le recours ainsi que sur deux questions y relatives concernant l'interprétation des normes applicables. Après que les parties ont pris connaissance du préavis de l'autorité de surveillance, selon lequel elle se ralliait à l'interprétation de la juridiction cantonale, A._ a confirmé ses conclusions, une dernière fois le 14 avril 2020.